Intelligent distributed geographic information system

ABSTRACT

Interactive geographic information systems (GIS) and techniques are disclosed that provide users with a greater degree of flexibility, utility, and information. A markup language is provided that facilitates communication between servers and clients of the interactive GIS, which enables a number of GIS features, such as network links (time-based and/or view-dependent dynamic data layers), ground overlays, screen overlays, placemarks, 3D models, and stylized GIS elements, such as geometry, icons, description balloons, polygons, and labels in the viewer by which the user sees the target area. Also, “virtual tours” of user-defined paths in the context of distributed geospatial visualization is enabled. Streaming and interactive visualization of filled polygon data are also enabled thereby allowing buildings and other such features to be provided in 3D. Also, techniques for enabling ambiguous search requests in a GIS are provided.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/295,935, filed Oct. 17, 2016, titled “Intelligent DistributedGeographic Information System” which is a continuation of U.S. patentapplication Ser. No. 13/736,808, filed Jan. 8, 2013, titled “DynamicView-Based Data Layer in a Geographic Information System” (now U.S. Pat.No. 9,471,625), which is a continuation of U.S. patent application Ser.No. 13/471,319, filed May 14, 2012, titled “Dynamic View-Based DataLayer in a Geographic Information System” (now U.S. Pat. No. 8,350,849),which is a continuation of U.S. patent application Ser. No. 11/426,694,filed Jun. 27, 2006, titled “Dynamic View-Based Data Layer In AGeographic Information System”, which claims the benefit of U.S.Provisional Application No. 60/694,529, filed Jun. 27, 2005, titled“Intelligent Distributed Geographic Information System.” In addition,this application is related to U.S. application Ser. No. 11/426,681,filed Jun. 27, 2006, titled “Virtual Tour of User-Defined Paths in aGeographic Information System”. In addition, this application is relatedto U.S. application Ser. No. 11/426,686, filed Jun. 27, 2006, titled“Streaming and Interactive Visualization of Filled Polygon Data in aGeographic Information System”. In addition, this application is relatedto U.S. application Ser. No. 11/426,783, filed Jun. 27, 2006, titled“Network Link For Providing Dynamic Data Layer in a GeographicInformation System”. In addition, this application is related to U.S.application Ser. No. 11/426,831, filed Jun. 27, 2006, titled “MarkupLanguage for an Interactive Geographic Information System”. In addition,this application is related to U.S. application Ser. No. 11/426,760,filed Jun. 27, 2006, titled “Processing Ambiguous Search Requests in aGeographic Information System”. In addition, this application is relatedto U.S. application Ser. No. 10/270,272, filed Oct. 10, 2002, titled“Server for Geospatially Organized Flat File Data.” Each of theseapplications is herein incorporated in its entirety by reference.

FIELD OF THE INVENTION

The invention relates to mapping systems, and more particularly, togeographic information systems and distributed geographic informationsystems.

BACKGROUND OF THE INVENTION

A geographic information system (GIS) is a system for archiving,retrieving, and manipulating data that has been stored and indexedaccording to the geographic coordinates of its elements. The systemgenerally can utilize a variety of data types, such as imagery, maps,and tables. One company involved in geographic information systems isESRI, which maintains a website at www.gis.com that includes backgroundinformation on conventional geographic information systems.

Generally, conventional geographic information systems have limitedusefulness in both their overall functionality and user interface. Forexample, any information search capabilities present in conventional GISand distributed geographic information systems (DGIS) have historicallyrequired a user to disambiguate the nature of a search request,selecting search scopes like “address search” or “lot number search” aseither an explicit component of the search process or implicitly byallowing only a single scope (most often “address”) within which allsearch requests are interpreted. In this sense, conventional GIS areeffectively hardwired to search and use particular kinds of information.

What is needed, therefore, are geographic information systems thatprovide users with a greater degree of flexibility, utility, andinformation.

SUMMARY OF THE INVENTION

One embodiment of the present invention provides a method for providinglayered information in a geographic information system (GIS). The methodincludes detecting on-screen view changes (those changes being relativeto a previous view), and generating a geospatial search region definedby an instantaneous view specification. The method further includesrequesting a view-dependent search for layer data based on thegeospatial search region, the layer data limited to at least one of thegeospatial search region and the geospatial search region plus anoff-screen border region. The method further includes receiving resultsof the view-dependent search. In one particular case, requesting aview-dependent search for layer data based on the geospatial searchregion is carried out only in response to the relative view change beinggreater than a predefined threshold. In another such particular case,and in response to the relative view change not being greater than thepredefined threshold, the method includes suppressing the view-dependentsearch. The method may include rendering the results into contents ofvirtual data layer, and may further include displaying that virtual datalayer. In another particular case, requesting a view-dependent searchfor layer data based on the geospatial search region includes contactinga search server identified by a view-dependent network link (VDNL)search specification to initiate the view-dependent search, andsubmitting the VDNL search specification and the geo spatial searchregion to the search server. In one such case, the VDNL searchspecification specifies other information including at least one ofimportance of search, information related to quality of service,previous search latencies, previous search results, time of last search,previous search positions, previous viewpoint motions, and previousoff-screen border region width profiles. In another such case, theoff-screen border region has a width profile that is specified in theVDNL search specification. In another particular case, the off-screenborder region has a width profile that is uniform around view frustum.In another particular case, the off-screen border region has anon-uniform width profile to reflect a bias based on an anticipateddirection of motion of view specification. In another particular case,the off-screen border region is only provided on one to three sides ofview frustum. In another particular case, the off-screen border regionhas a width profile that is dynamically controlled based on at least oneof previous search latencies, viewpoint motions, and previous widthprofiles. In another particular case, the off-screen border region has awidth profile that is dynamically controlled based at least one ofdesired quality of service, search server limits, bandwidth constraints,and relative importance of the view-dependent search relative to otherview-dependent searches that may be simultaneously active. In anotherparticular case, the off-screen border region has a width profile thathas at least one of: a lower width limit and an upper width limit.

Another embodiment of the present invention provides a machine-readablemedium (e.g., compact disk, diskette, server, or hard drive such as thatof a client) encoded with instructions, that when executed by aprocessor, cause the processor to carry out a process for providinglayered information in a GIS. This process can be, for example, similarto or a variation of the previously described method.

Another embodiment of the present invention provides a GIS for providinglayered information. The system functionality (e.g., such as that of thepreviously described method or a variation thereof) can be implementedwith a number of means, such as software (e.g., executable instructionsencoded on one or more computer-readable mediums), hardware (e.g., gatelevel logic or one or more ASICs), firmware (e.g., one or moremicrocontrollers with I/O capability and embedded routines for carryingout the functionality described herein), or some combination thereof.The system can be implemented in a client-server environment, with somefunctionality carried out, for example, at the server and some at theclient, or all at the client or local to the client, as will beappreciated in light of this disclosure.

The features and advantages described herein are not all-inclusive and,in particular, many additional features and advantages will be apparentto one of ordinary skill in the art in view of the figures anddescription. Moreover, it should be noted that the language used in thespecification has been principally selected for readability andinstructional purposes, and not to limit the scope of the inventivesubject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an interactive GIS configured in accordance with anembodiment of the present invention.

FIG. 2a illustrates a client-side mapping module of the GIS shown inFIG. 1, configured in accordance with an embodiment of the presentinvention.

FIGS. 2b and 2c illustrate a quad node tree shown in FIG. 1, and a cachenode retrieval process, configured in accordance with an embodiment ofthe present invention.

FIG. 3a illustrates a graphical user interface (GUI) of the GIS shown inFIG. 2a , configured in accordance with an embodiment of the presentinvention.

FIG. 3b demonstrates an example view when a 3D building layer is turnedon and the viewer is positioned within a reasonable viewing altitudeover a target city, in accordance with one embodiment of the presentinvention.

FIG. 3c demonstrates an example zoomed in and tilted view of a 3Dbuilding cluster, in accordance with one embodiment of the presentinvention.

FIG. 4 illustrates a method for presenting virtual tours of user-definedpaths in accordance with an embodiment of the present invention system.

FIG. 5 illustrates a process pipeline for carrying out a method forstreaming and interactive visualization of filled polygon data, inaccordance with one embodiment of the present invention.

FIG. 6 illustrates a clipping on quad boundary process, in accordancewith an embodiment of the present invention system.

FIG. 7a illustrates an example screenshot showing a network link feedfrom the USGS earthquake monitors.

FIG. 7b illustrates an example screenshot showing a network link feedfor historical flight path data for aircraft on approach to SFO.

FIG. 7c illustrates an example dialog box used for creating a newnetwork link, in accordance with one embodiment of the presentinvention.

FIG. 8 illustrates a method for providing layered information in a GISby using a mechanism referred to herein as a network link, in accordancewith one embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Geographic information systems (GIS) and techniques are disclosed thatprovide users with a greater degree of flexibility, utility, andinformation. The system may be a distributed geographic informationsystem (DGIS) including multiple components that communicate with oneanother. For purposes of this disclosure, assume that “GIS” includesboth GIS and DGIS configurations.

General Overview

A GIS configured to carryout the techniques described herein can beimplemented, for example, in a client-server architecture. Otherconfigurations will be apparent in light of this disclosure. Inaccordance with one such embodiment of the present invention,client-side software operates (in conjunction with server-side software)to bring images of the Earth and other geospatial information to auser's computer so they can be seen by the user. In one example case,the client software is implemented using various software objects thatare grouped in modules according to different functions that runindependently from one another in the system.

In more detail, and in accordance with one particular embodiment, amotion model in the user interface module of the software uses clientinput to adjust the client's virtual viewing position and orientation.The motion model also determines a view specification which defines theclient's viewable volume within a three-dimensional space (known as afrustum), and the position and orientation of the frustum with respectto a three-dimensional map. Once a view specification is determined, itis placed in local memory.

The view specification is read by a renderer, which is a software objectthat draws or “renders” drawable data. The renderer is grouped in aseparate renderer module and repeats a processing cycle, which includes:(1) reading the view specification in local memory, (2) traversing adata structure in local memory, referred to as a quad node tree, and (3)drawing drawable data contained in quad nodes of the quad node tree. Aquad node is a structure for organizing data residing in local memory.Each quad node may have a payload of data and up to four references toother files, each of which may be other quad nodes.

The references comprise a filename and a corresponding address in localmemory (assuming the file exists in local memory). The files referencedby a quad node are referred to herein as the children of that quad node,and the referencing quad node is referred to as the parent. Quad nodepayloads may include various types of data and are limited to a maximumvalue. The amount of data needed to describe an area of a particularresolution may in some cases exceed this maximum value, such that thedata must be split among parent and child quad nodes. Thus, data in apayload of a child quad node may be the same resolution as that of aparent quad node, but need not be as will be apparent in light of thisdisclosure.

When the renderer traverses the quad node tree, it will first look atthe payload of data in a parent quad node. If the payload is drawabledata, the renderer will compare a bounding box (a volume that containsthe data) of the payload, if present, to the view specification. If thebounding box is completely disjoint from the view specification, thedata will not be drawn, despite the fact that the quad node has alreadybeen downloaded from a remote server.

If the payload is considered appropriate to draw, the renderer willattempt to access each of the up to four references of the quad node. Ifthe reference contains an address to a file in local memory, therenderer will go to that child quad node and look at the payload,repeating the process for each subsequent child quad node until itencounters a quad node with a payload that has a bounding box completelydisjoint from the view specification. If the reference does not containan address in local memory (i.e., the referenced file does not exist inlocal memory), the renderer cannot access the file, and will continue tomove down the quad node tree without trying to obtain the file. In thisembodiment, the renderer only reads from the quad node tree, and doesnot provide coordinate and resolution information to any other object.

The quad node itself has a built-in accessor function. When the rendererattempts to access a reference that has a filename, but no correspondinglocal address, this triggers the accessor function of the quad node toindependently place its own address and the child reference number ontoa cache node retrieval list, which comprises a list of informationidentifying files to be downloaded from remotes servers. A networkloader in an independent network loader thread reviews the cache noderetrieval list and requests only the files referenced on the list.

A cache node manager in an independent cache node manager threadallocates space in local memory and organizes files retrieved by thenetwork loader into new quad nodes. The cache node manager also updatesthe parent quad nodes with the local memory address of these new childquad nodes. Therefore, on subsequent cycles of the renderer module,there will be additional quad nodes in local memory for the renderer toaccess. As in previous cycles, the renderer will look at the payload anddraw all drawable data that does not fall completely outside the viewspecification. The renderer thread will continue this cycle until itreaches a quad node with a payload that has a bounding box completelydisjoint from the view specification, or is otherwise inappropriate todraw. Thus, the renderer only draws what is already downloaded, and itonly stops drawing when it encounters already downloaded data that has abounding box completely disjoint from the view specification.

In addition to this architecture and functionality, a markup language isprovided that facilitates communication between servers and clients ofthe interactive GIS. In one such embodiment, each server and client isprogrammed or otherwise configured to execute the markup language tocarryout a number of GIS features, such as network links, groundoverlays, screen overlays, placemarks, 3D models, and stylized GISelements, such as geometry, icons, description balloons, polygons (thesurface of extruded lines are considered polygons), and labels in theviewer by which the user sees the target area.

A number of techniques and features can be employed by variousembodiments of the system. For instance, techniques for providingvirtual tours of user-defined paths (e.g., driving directions) in thecontext of distributed geospatial visualization are provided. Thesetechniques enable, for example, “fly through” of 3D satellite image mapthat is annotated with driving directions. Also, techniques forstreaming and interactive visualization of filled polygon data areprovided. These techniques enable, for instance, buildings and other mapfeatures to be provided in 3D, with size parameters (e.g., buildingheight) used as metric in determining when to show the 3D features atthe various zoom levels.

Also, a network link mechanism is provided to iteratively fetch remotecontent for a GIS application. A time-based network link fetchesplacemark files when triggered to do so by the passage of time (e.g.,“Get file X every 20 seconds”). This feature allows an external server(e.g., traffic server or earthquake data server or airplane locationdata) to be designated and periodically queried for data. That data canthen be populated onto a map. A view-dependent network link makes asearch query when triggered by the motion of the view specification.This technique essentially makes a data layer out of the query. Forinstance, in response to user entering “schools,” turn-on all schoolswithin mapping system (e.g., both in the viewing window and outsideviewing window to some degree) so as user scrolls, pans, or otherwisemoves the map, the corresponding new schools come into view (while otherschools go out of view).

Also, techniques for enabling ambiguous search requests in a GIS areprovided. Such techniques enable geospatial context for an arbitraryquery. For instance, in response to user entering a flight number, thesystem would show the location of the corresponding plane on a map.Likewise, in response to user entering a UPS tracking #, the systemwould show the location of the corresponding package on the map. Thesystem can “fly” to the location of the searched item. Relationalsearching is also enabled. For instance, in response to user entering“diet,” show location of hospitals, exercise clubs, Jamba Juice, Wholefoods, etc. An auto zoom features shows location of all relevant hits.

Each of these techniques/features, as well as others, will be discussedin turn in greater detail, and can be implemented in an interactive GISas will be apparent in light of this disclosure.

System Architecture

FIG. 1 illustrates an interactive GIS configured in accordance with anembodiment of the present invention.

The system combines satellite imagery, photographs, maps and othergeographic data, and Internet search capability so as to enable a userto view imagery of the planet and related geographic information (e.g.,locales such as islands and cities; and points of interest such as localrestaurants, hospitals, parks, hotels, and schools). The system furtherallows the user to conduct local searches, get travel directions to alocation or between two locations. The user can virtually fly from space(e.g., some vantage point above the Earth) to and around an enteredtarget address or location, such as his neighborhood or other area ofinterest. Results are displayed in a 3D view. The user can tilt androtate the view to see 3D terrain and buildings. The user can alsoannotate maps, and/or enable data layers to show, for example, parks,schools, hospitals, airports, shopping, and other points of interest orlocales. The user can also layer multiple searches, save results tofolders, and share search results and maps with others. In addition, adata exchange format referred to herein as KML (Keyhole Markup Language)enables the user to share useful annotations and view thousands of datapoints created by other system users.

As can be seen, the system includes a client-server architecture, wherethe server-side communicates with one or more clients 125 via a network120. The server-side includes a GIS server system 105, an image database110, and a map information provider 115. On the client-side, each client125 includes a mapping module 130 that operates as a geospatial browser130 a (or other suitable viewer), so as to provide the user with aninterface to the system. In one embodiment, at least some of the mappingmodules 130 of the clients 125 further include development modules thatend-users can use to generate data files describing particularpresentations of GIS data, as is explained in further detail in thepreviously incorporated U.S. application Ser. No. 11/426,831, filed Jun.27, 2006, titled “Markup Language for an Interactive GeographicInformation System”. In addition, the system may further include one ormore third-party content servers 140 for providing content to networklinks referring to the geospatial description file 140 a encodedthereon. The geospatial description file 140 a can be, for example, aKML file or other suitable script, as will be explained with referenceto the network link.

The GIS server system 105 is in communication with the image database,which includes image data (e.g., digital maps, satellite images, aerialphotographs, street-level photographs). Non-image data such as tabulardata (e.g., digital yellow and white pages), and map layer data (e.g.,database of diners, restaurants, museums, and/or schools; databases ofseismic activity; database of national monuments; etc) can also bestored in database 110 or in some other storage facility accessible toserver system 105. The database 110 (and others, if applicable) ispopulated (e.g., offline or in real-time) by the GIS server system 105.

The map information provider 115 provides server system 105 with mapinformation (e.g., satellite data, street-level photographs, aerialphotographs, digital maps, elevation data, longitude/latitude data, GPScoordinates). The provided map information can be collected, forexample, as a function of the server system 105 (e.g., map informationprovider 115 is a database of map information collected by the serversystem 105). Alternatively, or in addition to, various third party mapdata services can be used to provide map information to server system105. All such map internal/external information sources are generallyrepresented by map information provider 115. In any case, the GIS serversystem 105 receives requests for map information, and responds to thoserequests, via the network 120. The map information provider 115 can alsobe further configured to respond directly to user requests forgeographic data. In one embodiment, the GIS server system 105 encodesthe map information in one or more data files and provides the files tothe requestor.

Note that other modules may be included in the system, and thatillustrated modules may be rearranged. For instance, the database 110can be integrated into the GIS server system 105. Also, the mapinformation provider 115 can be integrated into the GIS server system105. Other configurations will be apparent in light of this disclosure,and the present invention is not intended to be limited to anyparticular one. Any number of modules can be programmed or otherwiseconfigured to carry out the server-side functionality described herein.

A client 125 on which the mapping module 130 runs can be, for example, adesktop or laptop computer. Alternatively, a client 125 can be awireless device, such as a personal digital assistant (PDA), smartphone, a navigation system located in a vehicle, a handheld GPS system,or other such devices/systems. In short, the client 125 can be anycomputer, device, or system that can execute the mapping module 130, andallows the user to interact with the GIS server system 105 (e.g.,requesting maps, driving directions, and/or data searches, and thenreceiving data files in response). In the embodiment shown, the mappingmodule 130 executes or otherwise runs as geospatial browser 130 a.

The GIS server system 105 can be implemented with conventional or customtechnology. Numerous known server architectures and functionalities canbe used to implement a GIS server. Further note that the GIS serversystem 105 may include one or more servers operating under a loadbalancing scheme, with each server (or a combination of servers)configured to respond to and interact with clients via the network 120.In one particular embodiment, the GIS server system 105 is implementedas discussed in the previously incorporated U.S. application Ser. No.10/270,272, titled “Server for Geospatially Organized Flat File Data.”

In general, when the user enters a search query (e.g., via thegeospatial browser 130 a presented by the client-side mapping module130), it is put into a request and sent to the GIS server system 105 viathe network 120. The server system 105 then determines what the searchquery is for, and responds with the appropriate data from varioussub-systems, such as geo-coders, routing engines, and local searchindexes, in a format that the requesting client 125 can use to presentthe data to the user (e.g., via the geospatial browser 130 a).

In addition to any conventional functionality, the GIS server system 105is further configured to interact with the mapping module 130, as willbe apparent in light of this disclosure. The mapping module 130 isdiscussed with further reference to FIG. 2a . In one embodiment, theserver system 105 responds to the requesting client 125 by encoding dataresponsive to the request into one or more data files and providing thefiles to the client.

The network 120 may be any type of communications network, such as alocal area network (e.g., intranet), wide area network (e.g., Internet),or some combination thereof. Alternatively, the network 120 may be adirect connection between a client 125 and the GIS server system 105. Ingeneral, communication between the server system 105 and a client 125can be carried via any type of wired and/or wireless connection, using awide variety of communication protocols (e.g., TCP/IP, HTTP, SMTP, FTP),encodings or formats (e.g., HTML, XML), and/or protection schemes (e.g.,VPN, secure HTTP, SSL).

Used in conjunction with the GIS server system 105, the geospatialbrowser 130 a interface provided by the mapping module 130 provide amapping system that serves maps and GIS data over the network 120. Thesystem allows users to visualize, select, annotate, and exploregeographic information all over the world or in a particular region,city, town, or other locale.

Client-Side Mapping Module

FIG. 2a illustrates a client-side mapping module 130 of the GIS shown inFIG. 1, configured in accordance with an embodiment of the presentinvention. As previously explained, components of the mapping module 130can be implemented as software running on a user's computer (client125), which then interacts with a GIS server system to bring images ofthe Earth and other geospatial information to the client 125 for viewingby the user. In operation, and in one particular configuration, varioussoftware objects are grouped in modules according to several functionsthat can run asynchronously (time independently) from one another.Numerous software implementations and functional module interactionswill be apparent in light of this disclosure.

As can be seen, the module 130 includes a user interaction module 201, alocal memory 203, a cache node manager 205, a renderer module 207, anetwork loader 209, a network interface 211, and a display interface215. In general, the user interaction module 201 receives user inputregarding the location that the user desires to view, and through amotion model 201 c, constructs a view specification 203 a. In therenderer module 207, the renderer draws whatever drawable data has beenpreviously brought back to the user's computer, except that the rendereruses the view specification 203 a to decide what not to draw from thatdata. The cache node manager module 205 runs in an asynchronous threadof control. The cache node manager module 205 builds a quad node tree203 b by populating it with quad nodes retrieved from the remote serversystem (via network 120). Each of these and other modules will now bedescribed in further detail.

The user interaction module 201 includes a graphical user interface(GUI) 201 a, an optional site lookup routine 201 b, and a motion model201 c. In the user interaction module 201, the user inputs locationinformation using the GUI 201 a, which results in the generation of theview specification 203 a, as will be described in turn. The viewspecification 203 a is placed in local memory 203, where it is used by arenderer in the renderer module 207, as also will be described in turn.The GUI 201 a is discussed in further detail with reference to FIG. 3 a.

Certain types of user input, including addresses and the names of wellknown places typed into a text input field of the GUI 201 a, trigger anoptional site lookup routine 201 b. The site lookup routine 201 b sendsthe address or name to the GIS server system 105 (via network 120), andin response, the latitude and longitude corresponding to the address orname is returned to the client mapping module 130. If a user hasselected a geographical location by double-clicking on it within thedisplay window of the GUI 201 a, then the latitude and longitudecorresponding to the selected location on the 3D map can be determinedlocally. In one particular embodiment, a default altitude over theselected location is used. A user can adjust the default altitude usingthe GUI 201 a (e.g., zoom controls), as desired.

The motion model 201 c uses location information received via the GUI201 a to adjust the position and orientation of a “virtual camera”viewing the displayed 3D map. The user sees the displayed 3D map on hisor her computer monitor from the standpoint of this virtual camera. Themotion model 201 c also determines the view specification 203 a based onthe position of the virtual camera, the orientation of the virtualcamera, and the horizontal and vertical fields of view of the virtualcamera.

The view specification 203 a defines the virtual camera's viewablevolume within the 3D space, known as a frustum, and the position andorientation of the frustum with respect to the 3D map. The frustum is inthe shape of a truncated pyramid. The frustum has minimum and maximumview distances that can change depending on the viewing circumstances.As the user's view of the 3D map is manipulated using the GUI 201 a, theorientation and position of the frustum changes with respect to the 3Dmap. Thus, as user input is received, the view specification 203 achanges. The view specification 203 a is placed in local memory 203,where it is used by a renderer in the renderer module 207.

In accordance with one embodiment of the present invention, the viewspecification 203 a specifies three main parameter sets for the virtualcamera: the camera tripod, the camera lens, and camera focus capability.The camera tripod parameter set specifies the following: the virtualcamera position: X, Y, Z (three coordinates); which way the virtualcamera is oriented relative to a default orientation, such as headingangle (e.g., north?, south?, in-between?); pitch/tilt (e.g., level?,down?, up?, in-between?); and yaw/roll (e.g., level?, tilt clockwise?,tilt anti-clockwise?, in-between?). The lens parameter set specifies thefollowing: horizontal field of view (e.g., telephoto?, normal humaneye—about 55 degrees?, or wide-angle?); and vertical field of view(e.g., telephoto?, normal human eye—about 55 degrees?, or wide-angle?).The focus parameter set specifies the following: distance to thenear-clip plane (e.g., how close to the “lens” can the virtual camerasee, where objects closer are not drawn); and distance to the far-clipplane (e.g., how far from the lens can the virtual camera see, whereobjects further are not drawn).

In one example operation, and with the above camera parameters in mind,assume the user presses the left-arrow (or right-arrow) key. This wouldsignal the motion model 201 c that the view should move left (or right).The motion model 201 c implements such a ground level “pan the camera”type of control by adding (or subtracting) a small value (e.g., 1 degreeper arrow key press) to the heading angle. Similarly, to move thevirtual camera forward, the motion model 201 c would change the XYZcoordinates of the virtual camera's position by first computing aunit-length vector along the view direction (HPR), and then adding theXYZ sub-components of this vector to the camera's position XYZ afterscaling each sub-component by the desired speed of motion. In these andsimilar ways, the motion model 201 c adjusts the view specification 203a by incrementally updating XYZ and HPR to define the “just after amove” new view position.

The renderer module 207 has cycles corresponding to the display device'svideo refresh rate, typically 60 Hz (cycles per second). In oneparticular embodiment, the renderer module 207 performs a cycle of (i)waking up, (ii) reading the view specification 203 c that has beenplaced by the motion model 201 c in a data structure accessed by therenderer, (iii) traversing a quad node tree 203 b in local memory 203,and (iv) drawing drawable data contained in the quad nodes residing inthe quad node tree 203 b. The drawable data may be associated with abounding box (a volume that contains the data, or other suchidentifier). If present, the bounding box is inspected to see if thedrawable data is potentially visible within the view specification 203a. Potentially visible data is then drawn, while data known not to bevisible is ignored. Thus, the renderer uses the view specification 203 ato determine whether the drawable payload of a quad node resident in thequad node tree 203 b is not to be drawn, as will now be more fullyexplained.

Initially, and in accordance with one embodiment of the presentinvention, there is no data within the quad node tree 203 b to draw, andthe renderer module 207 draws a star field by default (or other suitabledefault display imagery). The quad node tree 203 b is the data sourcefor all drawing that the renderer 207 does except for this star field.The renderer 207 traverses the quad node tree 203 b by attempting toaccess each quad node resident in the quad node tree 203 b. As explainedherein, each quad node is a data structure that has up to fourreferences and an optional payload of data. If a quad node's payload isdrawable data, the renderer 207 will compare the bounding box of thepayload (if any) against the view specification 203 a, drawing it solong as the drawable data is not wholly outside the frustum and is notconsidered inappropriate to draw based on other factors. These otherfactors may include, for example, distance from the camera, tilt, orother such considerations. If the payload is not wholly outside thefrustum and is not considered inappropriate to draw, then the renderer207 also attempts to access each of the up to four references in thequad node. If a reference is to another quad node in local memory (e.g.,memory 203 or other local memory), the renderer 207 will attempt toaccess any drawable data in that other quad node and also potentiallyattempt to access any of the up to four references in that other quadnode. The renderer's 207 attempts to access each of the up to fourreferences of a quad node are detected by the quad node itself, as willnow be explained.

As previously explained, a quad node is a data structure that may have apayload of data and up to four references to other files, each of whichin turn may be a cache node. In some cases, a file contains not only thereferenced child, but descendants of that child as well. Theseaggregates are known as cache nodes and may include several quad nodes.Such aggregation takes place in the course of database construction. Insome instances, the payload of data is empty. Each of the references toother files comprises, for instance, a filename and a correspondingaddress in local memory for that file, if any. Initially, the referencedfiles are all stored on one or more remote servers (e.g., included inGIS server system 105) and there is no drawable data present on theuser's computer. The files referenced by a quad node are referred toherein as the children of that quad node, and the referencing quad nodeis referred to herein as the parent.

Quad nodes and cache nodes have built-in accessor functions. Aspreviously explained, the renderer's 207 attempts to access each of theup to four references of a quad node are detected by the quad nodeitself. Upon the renderer's 207 attempt to access a child quad node thathas a filename but no corresponding address, the parent quad node places(by operation of its accessor function) that filename onto a cache noderetrieval list 205 a. The cache node retrieval list 205 a comprises alist of information identifying cache nodes to be downloaded from theGIS server system 105. If a child of a quad node has a local addressthat is not null, the renderer uses that address in local memory 203 toaccess the child quad node.

Quad nodes are configured so that those with drawable payloads mayinclude within their payload a bounding box or other locationidentifier. The renderer 207 performs a view frustum cull, whichcompares the bounding box/location identifier of the quad node payload(if present) with the view specification 203 a. If the bounding box iscompletely disjoint from the view specification 203 a (i.e., none of thedrawable data is within the frustum), the payload of drawable data willnot be drawn, even though it was already retrieved from the GIS serversystem 105 and stored on the user's computer. Otherwise, the drawabledata is drawn. The view frustum cull determines whether or not thebounding box (if any) of the quad node payload is completely disjointfrom the view specification 203 a before the renderer 207 traverses thechildren of that quad node. If the bounding box of the quad node iscompletely disjoint from the view specification 203 a, the renderer 207does not attempt to access the children of that quad node. A child quadnode never extends beyond the bounding box of its parent quad node.Thus, once the view frustum cull determines that a parent quad node iscompletely disjoint from the view specification, it can be assumed thatall progeny of that quad node are also completely disjoint from the viewspecification 203 a.

Quad node and cache node payloads may contain data of various types. Forexample, cache node payloads can contain satellite images, text labels,political boundaries, 3-dimensional vertices along with point, line orpolygon connectivity for rendering roads, and other types of data. Theamount of data in any quad node payload is limited to a maximum value.However, in some cases, the amount of data needed to describe an area ata particular resolution exceeds this maximum value. In those cases, suchas processing vector data, some of the data is contained in the parentpayload and the rest of the data at the same resolution is contained inthe payloads of the children (and possibly even within the children'sdescendents). There also may be cases in which children may contain dataof either higher resolution or the same resolution as their parent. Forexample, a parent node might have two children of the same resolution asthat parent, and two additional children of different resolutions (e.g.,higher) than that parent.

The cache node manager 205 thread and each of one or more network loader209 threads operate asynchronously from the renderer module 207 and theuser interaction module 201. The renderer module 207 and userinteraction module 201 can also operate asynchronously from each other.In some embodiments, as many as eight network loader 209 threads areindependently executed, each operating asynchronously from the renderermodule 207 and user interaction module 201. The cache node manager 205thread builds the quad node tree 203 b in local memory 203 by populatingit with quad nodes retrieved from the GIS server system 105 by networkloader 209 threads. The quad node tree 203 b begins with a root nodewhen the client mapping module 130 is launched or otherwise started. Theroot node contains a filename (but no corresponding address) and no datapayload. As previously described, this root node uses a built-inaccessor function to self-report to the cache node retrieval list 205 aafter it has been traversed by the renderer 207 for the first time.

In each network loader 209 thread, a network loader traverses the cachenode retrieval list 205 a (which in the embodiment shown in FIG. 2a isincluded in the cache manager 205 a, but can also be located in otherplaces, such as the local memory 203 or other storage facility) andrequests the next cache node from the GIS server system 105 using thecache node's filename. The network loader only requests files thatappear on the cache node retrieval list 205 a. The cache node manager205 allocates space in local memory 203 (or other suitable storagefacility) for the returned file, which is then organized into one ormore new quad nodes that are descendents of the parent quad node. Thecache node manager 205 can also decrypt or decompress the data filereturned from the GIS server system 105, if necessary (i.e., tocomplement any encryption or compression on the server-side). The cachenode manager 205 updates the parent quad node in the quad node tree 203b with the address corresponding to the local memory 203 address foreach newly constructed child quad node.

Separately and asynchronously in the renderer module 207, upon its nexttraversal of the quad node tree 203 b and traversal of this updatedparent quad node, the renderer 207 will now find the address in localmemory corresponding to the child quad node and be able to access thechild quad node. The renderer's traversal 207 of the child quad nodethen progresses according to the same steps that were followed for theparent quad node. This continues through the quad node tree 203 b untila node is reached that is completely disjoint from the viewspecification 203 a or is considered inappropriate to draw based onother factors as previously explained.

In this particular embodiment, note that there is no communicationbetween the cache node manager 205 thread and the renderer module 207other than the renderer's 207 reading of the quad nodes written orotherwise provided by the cache node manager 205 thread. Further notethat, in this particular embodiment, cache nodes and thereby quad nodescontinue to be downloaded until the children returned contain onlypayloads that are completely disjoint from the view specification 203 aor are otherwise unsuitable for drawing, as previously explained.

The network interface 211 (e.g., network interface card or transceiver)is configured to allow communications from the mapping module 130 to besent over the network 120, and to allow communications from the remoteserver system 105 to be received by the mapping module 130. Likewise,the display interface 215 (e.g., display interface card) is configuredto allow data from the mapping module to be sent to a display associatedwith the user's computer, so that the user can view the data. Each ofthe network interface 211 and display interface 215 can be implementedwith conventional technology.

Quad Node Tree

FIGS. 2b and 2c illustrate one example of quad node tree 203 b shown inFIG. 1, and a cache node retrieval process, configured in accordancewith an embodiment of the present invention. As can be seen in FIG. 2b ,this example tree 203 b currently has a root node, a parent node, fourchildren nodes, and a number of additional descendants from those fourchildren nodes. Each node has a built-in accessor function.

As previously explained, the cache node manager module 205 builds thequad node tree 203 b by populating it with quad nodes retrieved from theremote server system 105. The quad nodes used to populate the tree 203 bare identified by the renderer 207, which runs asynchronously to thecache node manager 205. In particular, the renderer 207 traverses thequad node tree 203 b looking for drawable payload data that is withinthe current view specification 203 a. When the renderer 207 attempts toaccess a quad node reference that has a filename, but no correspondinglocal address (such as the case with the root node, or the 3^(rd) childnode of the “descendants X” shown in FIG. 2b ), this triggers theaccessor function of that quad node to independently place its ownaddress and the child reference number onto a cache node retrieval list205 a, which comprises a list of information identifying files to bedownloaded from the remote server system 105. An independent networkloader 209 thread periodically reviews the cache node retrieval list 205a, and requests only the files referenced on the list. It is throughthese asynchronous processes that the quad node tree 203 b is built andmaintained during a given user session.

In the example shown, the root node has already been accessed by therenderer 207, which effectively caused the downloading of the parentquad node as explained herein. This example parent quad node includes apayload and four references (Ref #1, Ref #2, Ref #3, and Ref #4) toother quad nodes, which are the children of that parent. The payload hasa bounding box (designated as “BB” in FIGS. 2b and 2c ) that includesdata “a, b, c.” This payload can include, for example, satellite images,text labels, political boundaries, 3-dimensional vertices along withpoint, line or polygon connectivity for rendering roads, and other typesof data as will be apparent in light of this disclosure. The data isdesignated with “a, b, c” in this example only to show how data can berepresented using multiple quad nodes when the data cannot fit in asingle quad node, and is not intended to implicate any particularnode/tree/data structures or types. Each reference includes a filename(fn) of a child node, and an address in local memory 203 where that filecan be located.

Once the renderer 207 accesses the parent node and determines that itspayload is drawable and not completely outside the frustum of the viewspecification 203 a, it draws that payload. The renderer 207 alsoaccesses each of the four reference files, thereby creating a generationof child nodes (generally designated as descendants X in FIGS. 2b and 2c), which includes four children. From top to bottom: the first childnode includes payload having a bounding box that includes datadesignated with a_(i) and three reference files (Ref #1, Ref #2, and Ref#3); the second child node includes payload having a bounding box thatincludes data designated with b and no reference files; the third childnode includes payload having a bounding box that includes datadesignated with c_(i) and two reference files (Ref #1 and Ref #2); andthe fourth child node includes payload having a bounding box thatincludes high-resolution (Hi-Res) data designated with a, b, c and threereference files (Ref #1, Ref #2, and Ref #3).

Each of these descendant X children nodes is accessed in turn by therenderer 207, so that the respective payloads can be drawn (ifappropriate) and reference files can be accessed (if appropriate). Inthis example, when the renderer 207 accesses the second reference (Ref#2) of the 3^(rd) child node of the descendants X shown in FIG. 2b , itencounters a filename with a NULL address. As previously explained, thistriggers the accessor function of that 3^(rd) child node toindependently place its own address and the corresponding referencenumber (Ref #2) onto the cache node retrieval list 205 a. The networkloader 209 then causes the listed files (including the file associatedwith Ref #2) to be downloaded from the remote server system 105. As canbe seen in FIG. 2c , the requested file is received via the networkloader 209 and provided to the cache node manager 205. The cache nodemanager 205 then allocates space in local memory 203 for the returnedfile, and organizes it into a new child quad node (included indescendants Y), which is a descendent of the 3^(rd) child node ofdescendants X. The cache node manager 205 also updates the 3^(rd) childnode with the new address (New add) of that allocated space.

Once the quad node for Ref 2 is created by operation of the cache nodemanager 205, the child nodes of descendants Y include eight children.From top to bottom: the first child node includes payload having abounding box that includes data designated with a_(ii) and no referencefiles; the second child node includes payload having a bounding box thatincludes data designated with a_(iii) and no reference files; the thirdchild node includes payload having a bounding box that includes datadesignated with a_(iiii) and no reference files; the fourth child nodeincludes payload having a bounding box that includes data designatedwith c_(ii) and no reference files; the fifth child node includespayload having a bounding box that includes data designated with c_(iii)and no reference files; the sixth child node includes payload having abounding box that includes high resolution data designated witha_(i, hi-res) and three reference files (Ref #1, Ref #2, and Ref #3);the seventh child node includes payload having a bounding box thatincludes high resolution data designated with b, _(hi-res) and noreference files; and the eighth child node includes payload having abounding box that includes high resolution data designated withc_(i, hi-res) and two reference files (Ref #1 and Ref #2).

Descendants Z include the child nodes specified by the references of thesixth and eighth child nodes of descendants Y, include additional highresolution payload data for a and c, as can be seen. The renderer 207will process the high resolution quad nodes, depending on the datarequested by the user. In general, higher zoom levels (lower viewingaltitudes) require higher resolution image data.

Graphical User Interface

The GUI 201 a is used to receive input from a user. FIG. 3a illustratesone particular embodiment of the GUI 201 a, which operates as ageospatial browser that includes a display window 321 for displaying a3D map, and a text input field 303 for entering location informationsuch as latitude and longitude, an address and/or zip code, or the nameof a well-known site (e.g., “Lincoln Memorial” or “Area 51”). The GUI201 a has a number of modes in which it can operate, including Fly Tomode, Local Search mode, and Directions mode, as shown by mode selectbuttons 301. Fly To mode is shown in FIG. 3a , where any location (e.g.,New York City or a zip code or the “White House”) can be entered intofield 303, and the display window 321 will automatically zoom out andthen slide over to and then zoom in to the target location, giving theeffect of virtual flying (as the display window 321 shows imagery of theroute from the current location to the target location). The LocalSearch mode allows the user to search for local businesses (e.g.,“pizza”) and points of interest (e.g., museums) in either the currentlyviewed location, or in a user-specified location (in this mode, a firsttext input field can be provided to indicate what is being searched forand a second text input field can be provided to indicate where tosearch). The Directions mode allows the user to specify start and stoplocations (in this mode, a first text input field can be provided toindicate the start location and a second text input field can beprovided to indicate the stop location), and then provides a map andwritten directions for traveling between those locations.

The GUI 201 a also includes a zoom control 309 for adjusting the viewingaltitude, a tilt control 315 for adjusting the viewing angle, rotationcontrols 327 for rotating the view left and right, and a set of panningcontrols 311 to view areas of the 3D map to the left, right, top orbottom of the display window.

The GUI 201 a also includes places control 305, which allows the user toorganize saved data in a Places panel in a way similar to how a userwould organize files and folders on a computer's hard drive. Forexample, the places control 305 allows the user to create folders,reorder placemarks or folders, rename a placemark or folder,remove/delete a placemark or folder, and empty a folder's contents.Also, the user can select (e.g., check box or other such GUI controlmechanism) various places designated in the places control 305, and thenselect a “play” function button (lower right of places control 307panel) so that a virtual tour of those selected places will then bedisplayed in the window 321. Stop and pause functions can also beprovided to give the user more control over the virtual tour. As will beexplained in turn, navigation of such user-defined paths can be computedby the mapping module 130.

The GUI 201 a also includes layer control 307, which provides a varietyof data points of geographic interest (e.g., points of interest, as wellas map, road, terrain, and building data) that a user can select todisplay over the viewing area. In the embodiment shown in FIG. 3a ,example commonly used layers are available on the Navigation panel(e.g., Lodging, Dining, Roads, Boarders, Terrain, and 3D Buildings) anda full list of layers is available in the Layers panel (e.g., NationalGeographic Magazine articles relevant to a particular area, Golfcourses/ranges, Coffee Shops, Community Sites, earthquake epicenters,etc).

The GUI 201 of this example embodiment also displays image data 323 inthe lower portion of the display window 321, including pointer/cursorcoordinates (e.g., lat/lon/altitude), streaming percentage completion,and eye altitude (e.g., feet). The eye altitude data is particularlyuseful when the user is adjusting tilt control to get a closer look at atarget location, in that the user knows how close to the ground thecurrent view is based on the current eye altitude. The GUI 201 a furtherincludes print and email controls 319 (so as to allow for printing andemailing of locations and/or images). Also, the GUI 201 a includes anadd placemark/folder/network link control 317, which allows the user tocreate or otherwise add new placemarks, folders, and/or network links.The geospatial browser main menus 325 include the File menu (e.g.,functions such as Open, Save, Save As, Email/Email View, Share withOnline Community, Print, Logout), Edit (e.g., includes functions such asFind in Places, Find Next, Find Prev, Copy, Snapshot View, Past Delete,Rename, Refresh, Apply Style Template, Delete Content, Save to MyPlaces, Clear Search History, and Properties), View (e.g., includesfunctions and selectable display features such as Full Screen, ViewSize, Compass, Status Bar, Lat/Lon Grid, Overview Map, and Play Tour),Add (e.g., includes functions to allow the addition of Placemarks,Folders, Image Overlays, and Network Links), Tools (e.g., includesselectable tools such as Navigation panel, Places panel, Layers panel,Measuring tool, and Web Search panel), and Help (e.g., includes accessto online help center and other informative sources). Note that the addplacemark/folder/network link control 317 can be configured to providemenu options that correspond to the options in the Add menu of thegeospatial browser main menus 325. Further note that various places andlayers of the Places and Layers panels can be expanded (or condensed) toshow additional (or fewer) sub-places and sub-layers (e.g., click GUIarrow pointing at place/layer label to expand or showsub-places/sub-layers, or click GUI arrow pointing down to condense orhide sub-places/sub-layers).

Numerous GUI configurations and underlying functionalities will beapparent in light of this disclosure, and the present invention is notintended to be limited to any one particular configuration. Thedisplayed 3D maps can be manipulated using the GUI 201 a. The GUI 201 acan be used to reposition the current map view, for example, by clickingand dragging in the display window 321. A user may also select ageographical location by double-clicking on it within the display window321.

3D Buildings

As previously explained with reference to FIG. 3a , the Layers panelincludes a variety of data layers that can be selected to display overthe viewing area. Example data layers include points of interest as wellas map, road, terrain, and 3D buildings. The 3D buildings can begenerated (as will be discussed with reference to FIG. 5) for a numberof major cities such as Boston, London, Sidney, Washington, D.C., andSan Francisco, to name a few.

To view these 3D buildings, the 3D building layer is turned on byselecting the check box included in the layer control 307. Then, theviewer is positioned within a reasonable viewing altitude over thetarget city. In accordance with one embodiment of the present invention,the 3D buildings start to appear from an eye-elevation of 3,000 to12,000 feet. One such example view is shown in FIG. 3b . Recall that theeye altitude meter on the lower right of the 3D viewer (image data 323)can be checked to determine the current viewing height. The 3D buildingsappear as light grey objects over the imagery of the city. As the userzooms in, more details will appear until the entire shape of a buildingcan be seen. The tilt control 315 and rotate controls 327 can be used toget the desired view of the buildings. FIG. 3c demonstrates an examplezoomed in and tilted view of a building cluster.

Virtual Tour of User-Defined Path

One embodiment of the present invention is configured to compute anoptimal flight path to visualize travel along a path defined by theuser, such as driving or walking directions or any other path (e.g.,flying directions, where the tour focuses more on the individualdestinations than lengthy pathways in between) on the surface of theplanet in the context of distributed geospatial visualization.

In particular, given a list of geo-referenced waypoints on Earth(described for example as a list of latitude/longitude pairs associatedwith a number of selected places in the Places panel of the GUI 201 a)and some viewing parameters (e.g., camera speed, range and tilt anglewith respect to vertical), the interactive GIS is adapted to compute anoptimal flight path that allows users to visualize that path. Thisvirtual tour capability can be applied to driving directions results,for instance, to allow previewing a route. In this sense, the mappingmodule 130 can then play a tour of computed camera waypoints, whetherfor driving directions, pedestrian walking and hiking paths, publictransportation, and any other such paths that can be traversed and/orpreviewed. In one particular embodiment, the technique simulates ahelicopter flying along the chosen path (e.g., driving directionsbetween two points, or a path created manually using drawing tools) at aconstant ground speed with a constant tilt angle. In addition, thevisually rich virtual driving/walking/riding/flying experience providedby approaching, transiting, and then reviewing a planned path within thecontext of a simulated Earth environment, which may include3-dimensional views.

An interactive GIS configured in accordance with an embodiment of thepresent invention presents this virtual tour of a user-defined pathcapability through a staged method as shown in FIG. 4. As can be seen,part of the method is carried out by the server-side (e.g., serversystem 105) and part by the client-side (e.g., mapping module 130) ofthe interactive GIS. The functionality can be integrated into dedicatedmodules, and/or into modules discussed with reference to FIG. 2a , aswill be apparent in light of this disclosure.

The method begins with receiving 403 a plurality of user-definedlocations (e.g., start and stop destinations, or a point of interestset) from a client. These locations can be selected by the user, forexample, using check boxes next to the desired locations indicated inthe Places panel of the GUI 201 a. Alternatively, the GUI 201 a can beconfigured to allow the user to enter a series of locations using one ormore text entry fields (e.g., start location field, a plurality ofintermediate location fields, and a stop location field). The locationscan be arbitrary and the order of selection is insignificant (e.g.,either the start or end location may be selected first, and subsequentrouting requests may replace one or both of the start or end locations).

Once the locations (also referred to as waypoints) are provided by theuser, the method continues with generating 405 a route including thespecified locations, and returning that route to client/user. The routecan be generated, for example, on a local server, a remote server, or acombination of the two. In one particular embodiment, and with referenceto FIG. 1, the locations are provided by the user at a client 125 andthen sent to the GIS server system 105 via the geospatial browser 125 aand network 120, so that the route can be generated. The generated routeis then sent back to the mapping module 130 of the requesting client125.

The method continues with displaying 407 the route to user at a firstzoom level (e.g., zoom level suitable to show entire route on displayscreen). The display can be, for example, a set of placemarksdesignating each location, or a multi-segmented path (e.g., a POLY-LINE)extending from a start location to an end location, and including anyspecified intermediate locations. The displayed line or path may followroadways, walkways, and public transit paths (e.g., bus and subwaylines) selected by routing logic (e.g., included in GIS server system105), with the user-defined waypoints shown along the way (e.g., usingicons or placemarks). The zoom level can be set as needed to show theentire route in the display window. In one particular embodiment, thestart location is indicated with a green icon, intermediarylocations/waypoints are indicated with an amber icon, and the end pointis indicated with a red icon, though these colors and markers are justone example of many choices that could be used.

The method continues with determining 409 if the user has selected theroute for preview. The user can indicate this selection, for example, bydouble-clicking the route in the display window 321, or by selecting the“play” button in the Places panel as previously discussed. If the userhas not selected the route, then the method continues to display theoverall route, until a new route is selected or the user pans to a newview or some other such change takes place.

Otherwise, if the user has selected the route, the method continues withsimulating 411 a fly-through of the route from the start to stoplocations, including any specified intermediate locations. Thisfly-through provides the user with a virtual tour of the specifiedlocations/waypoints. The term “fly-through” is used here to indicatevirtual motion along a path or route (whether the path/route isuser-defined or otherwise), and is intended to represent all motiontypes (e.g., flying, driving, walking, running, cycling, motor-biking,etc). The zoom level can be set as necessary during the fly-through. Forinstance, if a single zoom level is suitable to show all of thewaypoints at once (i.e., an overall zoom level) as well as details ofeach waypoint during the fly-through, then a single zoom level can beused for the whole tour. Likewise, a common zoom level can be used forwaypoints that are relatively close together (e.g., from one end of MainStreet to the other). Alternatively, the fly-through may include zoomingin to each waypoint (e.g., at a close-up zoom level that shows moredetail of that waypoint) and momentarily pausing at that zoomed in levelto give the user time to visualize the waypoint. After the momentarypause (e.g., 5 to 10 seconds), the fly-through process may then zoomback out to the overall zoom level and fly to the next waypoint, wherethe zoom in, pause, and zoom out procedure is repeated (and so on, foreach waypoint along the user-defined path). The virtual tour can berepeated and/or paused as desired (e.g., using “play,” “pause,” and“stop” controls of GUI 201 a). Once paused at a particular waypoint, theuser can further explore that waypoint in a free-style manner by usingthe keystrokes and/or GUI 201 a controls such as zoom, pan, rotate, andtilt. The normal fly-through process will then take over once the touris un-paused (e.g., user selects the “play” control).

In one particular embodiment, the visual offset from the actual path isdesigned to show an “over the shoulder view” compared to a humantraversing this same path as opposed to a “through the windshield view”that a driver might see. This is to enable greater contextual awareness.Note, however, that users can also select the “through the windshieldview” display mode, if so desired. One particular implementation of the“over the shoulder view” mode includes computing a set of virtual camerawaypoints based on the given list of points (also described as “path”)provided by the user. The virtual camera waypoints are computed suchthat the orientation of the virtual camera is always forward relative tothe path, as opposed to following the path always looking towards north.To accomplish this, the azimuth of the virtual camera is computed ateach waypoint based on the direction of the camera path. Recall thatcomputing of waypoints and camera azimuth can be carried out by theserver system 105, the mapping module 130, or a combination of the two.

In order to prevent jittering, and in accordance with one particularembodiment, the path is first decimated (e.g., at the GIS server system105) based on the viewing preferences chosen by the user. The goal is toprevent the final virtual camera path from displaying harsh changes inazimuth that would seem unneeded or visually unappealing. The virtualcamera azimuth can then be computed at each point in the decimatedcontrol path to force the virtual camera to point forward in thedirection of the path. The distance between each waypoint in thecomputed virtual camera path is taken into account to compute timecontrol points. The goal in one such case is for the virtual camera totravel at the speed specified by the user.

Streaming and Interactive Visualization of Filled Polygon Data

Another embodiment of the present invention is a method for streamingand interactive visualization of filled polygon data. The method can beused, for example, for streaming 2D/3D filled polygon data that havebeen commonly used for representing protruding (e.g., buildings andbridges) as well as non-protruding (e.g., golf courses and lakes)non-terrain geographic features. After being subjected to a height-basedpre-filtering process (only applied to 3D buildings), the input polygondataset is divided into smaller manageable collections referred to asquads. The geometry in these quads is then simplified to form a set ofless complex polygons while minimizing the perceptual loss and providinginteractive frame rates on the client software.

Conventional systems that provide 3D buildings download the buildings,typically from a local disk. The 3D buildings are then loaded into anapplication for processing. The analogy here would be loading an entireencyclopedia into the application.

In accordance with an embodiment of the present invention, the data isstreamed incrementally to the mapping module 130 as the user “flies”around, and the GIS server system 105 sends only a small subset of theoverall database. By analogy, one example embodiment might load all ofthe first 100 topics of encyclopedia volume “A,” the first paragraphs ofthe next 400 topics, the first sentence of the next 2000 topics, andonly the information on the spine of the next few volumes. As the usermoves around within the area/topics, the center of the user's“information oasis” changes. By the time the user gets to the end of “Z”then the mapping module 130 would have just the opposite of the startingconfiguration. The hierarchy of abstractions and simplifications isreferred to herein as “levels of detail.” These levels of detail arecomputed in the data processing system (e.g., of GIS server system 105)in advance, so that later, the server system 105 can stream a small andsteady amount of information to millions of client 125 applications sothat each one can reconstruct just the nearby buildings based on theirparticular view specification 203 a (e.g., position, orientation, etc.)and on the available power of their computer system (e.g., low powernotebook, powerful notebook, deskside, gamer's deskside).

FIG. 5 illustrates the process pipeline for carrying out a method forstreaming and interactive visualization of filled polygon data, inaccordance with one embodiment of the present invention. As can be seen,the method includes a number of stages by which complex polygon data isconverted to simplified polygon data. The stages includes asset creation503, height-based pre-filtering 505, clipping on quad boundaries 507,and feature-preserving simplification 509. Each of these stages ormodules can be implemented, for example, as a set of executableinstructions running on the GIS server system 105.

Asset Creation 503: Before applying any algorithm to the complex polygondataset, that dataset is ingested into the system by creating a vectorasset. This process creates an optimized representation of the complexpolygon source data inside of the interactive GIS. Asset creation can becarried out using conventional techniques for integrating a data setinto a system for subsequent processing.

Height-based Pre-filtering 505: The building datasets are subjected toan additional height-based pre-filtering process. Building polygons arefirst grouped by their relative height (height above the terrain). Thisis done so as to preserve the skylines for urban cities. Most citieshave a very well defined skyline that is visible from a long distance.This skyline is primarily composed of tall buildings. The grouping canbe made, for example, based on a predefined scheme that includes aheight range for each group (e.g., 10 feet intervals starting at onestory buildings and continuing to N story buildings, with the highestfloor at 10×N). The shorter the range per group, the greater the heightsensitivity provided by the interactive system, and the more accuratethe virtual skyline will be.

Clipping on Quad Boundaries 507: In order to process large amounts ofpolygon data quickly, the data is indexed spatially and divided intosmaller sets. These smaller sets are referred to herein as quads. Eachquad is represented by a quad node in the quad node tree 203 b aspreviously discussed. The biggest challenge in dividing the data intoquads is avoiding introduction of cracks in the dataset. A certainfraction of polygons fall on quad boundaries and need to be clipped. Theclipping process generates additional geometry in the form of newlyintroduced vertices and edges in the interior of the polygons. Thesevertices and edges are flagged as being internal. For the actualclipping process, one particular embodiment implements the Liang-Barskypolygon clipping algorithm (although other suitable clipping algorithmscan be used) followed by a degenerate edge removal post-process. FIG. 6visually illustrates this clipping process. Polygons in marked area havebeen selected as being inside the quad. Note that the dashed borderaround the polygons is drawn in to designate the quad area for purposesof discussion, and otherwise would not be shown.

Feature-Preserving Simplification 509: This process includes a number ofaspects, including elimination of collinear vertices, volume-basedsimplification of 2.5D polygons (extruded 2D geometry, such asbuildings), shape-preserving simplification of 2D polygons,shape-preserving simplification of 3D polygons, and view-dependentsimplified sets. Each will now be discussed in turn.

Elimination of collinear vertices—Once the polygons are clipped, theyare subject to a decimation process. Typically, vendors introduce largenumber of collinear vertices (e.g., 20-40%) in their polygon data. Thesevertices increase the dataset without providing any meaningfulinformation. In accordance with one embodiment of the present invention,the collinear vertices that are contiguous are eliminated by setting athreshold on the amount of angular variation in contiguous line segmentsdefined by these vertices. Additional thresholds can be set forpreserving very close and almost collinear vertices that are used torepresent curved surfaces.

Volume-based simplification of 2.5D polygons (extruded 2D geometry, suchas buildings)—In order to preserve the overall density of the visiblebuildings while providing interactive visualization at every level i ofdetail, the overall volume enclosed by the features can be preserved.This gives a good balance between preserving important structures andmaintaining a good frame-rate. Polygons are sorted based on the volumesenclosed. Polygons enclosing less volume are eliminated at that levelbased on a simplification factor that is a function of the level i ofdetail required. Polygons generated as a result of clipping are noteliminated. This is done so as to make sure that partial buildings atquad boundaries are seen where one quad is rendered at a higher level ofdetail and the adjacent quad is rendered at a lower level of detail.

Quads that are simplified are re-introduced with the original detailagain two levels below (Level i+2). Further simplification isaccomplished by aggregating buildings into city blocks. This is doneonly at lower levels of detail where the features begin to occupysub-pixel space in the display window 321.

Shape-preserving simplification of 2D polygons—For 2D polygons, the goalis to preserve the shape of the feature. In accordance with oneembodiment of the present invention, a simplification here works on aper-polygon basis. Vertices are classified as critical/non-criticalbased on the angle subtended by the line-segments containing the vertexand also the lengths of the line segments themselves. In order to avoidintroducing cracks, vertices at the quad boundaries are not eliminated.

Shape-preserving simplification of 3D polygons—Non-extruded structuressuch as pyramid-shaped buildings, bridges, etc are usually representedas triangulated irregular networks. One embodiment of the presentinvention simplifies such datasets by replacing complex triangle mesheswith simpler ones, while preserving the shape of the structures. Indoing so, the surface curvature of the meshes are taken into account.

View-dependent simplified sets—Server-side simplification cannot takeinto account the view of the user. Therefore, the server-side algorithms(e.g., of GIS server system 105) cannot perform view-dependentsimplification. Thus, in one embodiment, the server system 105 createssimplified sets of geometry based on different camerapositions/orientations. At runtime, the mapping module 130 of client 125can choose the set that best matches the current camera pose.

KML

The interactive GIS described herein supports a number of displayfeatures for rich presentation of GIS data. All of the featuressupported by the GIS can be described in KML. KML, or Keyhole MarkupLanguage, is a hierarchical XML-based grammar and file format formodeling, storing, and displaying geographic features such as points,lines, images, and polygons for display by the client 125. KML controlselements that appear in the 3D viewer (e.g., browser 130 a) and thePlaces pane (e.g., as discussed with reference to FIG. 3a ).

In accordance with one particular embodiment, the client 125 downloadsone or more KML files from the GIS server system 105 when presenting GISdata. In addition, the client 125 can download KML files from otherservers on the network 120. Moreover, an end-user can use the client 125to create KML files and optionally share the files with the serversystem 105 and/or other clients 125 via the network 120 and/or othermeans.

In one embodiment, files containing KML are encoded in a default fileformat referred to as “KMZ.” KMZ is a compressed file format and in oneembodiment uses compression based on the common ZIP file formats. Othercompression schemes can be used as well. A single KMZ file can containone or more constituent files that are extracted when the KMZ file isutilized. A benefit of using KMZ is that all of the images and otherdata utilized to create a particular presentation of GIS data areself-contained within a single file that can be easily shared among theGIS server system 105 and clients 125.

KML can be authored in a number of ways, depending upon the desiredpurpose. Three particular examples include using a text editor, using aclient 125, and using a development environment to generate KMLprogrammatically, each of which will now be discussed in turn.

Use a text editor—A text editor can be used to create KML as a way tocreate simple file prototypes, or to test out the validity of aparticular KML document syntax or structure. For quick KML syntaxchecking in accordance with one particular embodiment, right-click on aplacemark or overlay in the GUI 201 a and select Copy from the pop-upmenu. Then, open a simple text document and paste the KML contents intoit for a quick and easy way to view KML generated by the client 125.

Use client 125 to author data—To create KML for distribution by email orto host as non-dynamic content on a web server, use client 125. Inparticular, structure the data as desired in the GUI 201 a and save itas a separate file (KMZ). This is also a useful way to determine thebest structure for more complex KML documents that can be authoredprogrammatically. The client 125 can create and save all but a few KMLtags, in accordance with one particular embodiment. Recall that themapping module 130 on a client 125 may be further configured with adevelopment module that an end-user can use to generate KML and save theKML in a KMZ file, a discussed in more detail in the previouslyincorporated U.S. application Ser. No. 11/426,831, filed Jun. 27, 2006,titled “Markup Language for an Interactive Geographic InformationSystem”.

Use a development environment to generate KML programmatically—Anyfavored development environment (e.g., php, Java servlets) can be usedto author KML content for delivery via the web, much in the same waythat other dynamic web content is created. Most content editors thatdisplay XML data can do the same for KML.

The following is an example KML file:

<kml xmlns=“http://earth.google.com/kml/2.0”> <Placemark><description><![CDATA[<a href=“http://www.google.com/”>GoogleSearch!</a>]]></description> <name>Google Headquarters</name> <LookAt><longitude>−122.0839</longitude> <latitude>37.4219</latitude><range>540.68</range> <tilt>0</tilt> <heading>3</heading> </LookAt><Point> <coordinates>−122.0839,37.4219,0</coordinates> </Point></Placemark> </kml>In this example, the <kml> element contains a single <Placemark> elementnamed Google Headquarters. When loaded into the client 125, the<Placemark> is displayed as the default icon positioned at the longitudeand latitude given by the <coordinates> element. The <LookAt> element ofthe <Placemark> specifies the “virtual camera” view when displaying theplacemark in the 3D viewer (e.g., browser 125 a). Note how the<description> text contains HTML tags and a hyperlink. The viewerdisplays the description and formats it according to the HTML tags andwill open clicked hyperlinks in a web browser window (in this example,the Google homepage will open). In accordance with one embodiment of thepresent invention, this example KML code can be tested by copying andpasting it to a simple text editor and saving it as a file with theextension .kml. Then, drag and drop the file over the 3D viewer of theclient 125 to view the results.

In accordance with one particular embodiment of the present invention,KML can be used to:

-   -   Specify icons and labels to identify locations on the planet (or        other target area) surface.    -   Create different camera positions to define unique views for        each of the displayed features.    -   Use image overlays attached to the ground or screen.    -   Define styles to specify feature appearance.    -   Write HTML descriptions of features—including hyperlinks and        embedded images.    -   Use folders for hierarchical grouping of features.    -   Dynamically fetch and update KML files from remote or local        network locations (Network Link).    -   Deliver current view details from the client to the server in        order to fetch KML data based on changes in the 3D viewer.    -   A KML file is processed by the client 125 in a similar way that        HTML (and XML) files are processed by web browsers. Like HTML,        KML has a tag-based structure with names and attributes used for        specific display purposes. Thus, the client 125 acts as a        browser of KML files.

KML features share a number of common elements: Name, Description,Visibility, View Coordinates, and Snippet, as will now be described.

Name: The KML syntax uses the <name> tag to provide the name of afolder, placemark, overlay, or other features for easy identification inthe mapping module 130. The following example shows the <name> elementapplied to a <Folder> element.

<Folder> <name>My House</name> . . . </Folder>Values of <name> are user-defined, and it can be contained by (i.e., itparent tags): <Folder>, <Document>, <GroundOverlay>, <Placemark>,<ScreenOverlay>, and <Schema>. It has no child tags. The <Schema>element is a complex tag that is used to define a custom schema toenable KML to properly interpret elements in your KML not native to thedefault KML schema. Using this <Schema> tag and its children, the usercan define his own schema as a set of named and typed XML elements. The<Schema> tag has no values and no parent tags, but is parent to thefollowing elements: <name>, <parent>, <ObjField>, <ObjArrayField>,<SimpleField>, and <SimpleArrayField>.

Description: The <description> tag can be used to enter additionalinformation about a feature. This description appears, for example, inthe Places panel (of the GUI 201 a shown in FIG. 3a ) when the userclicks on a folder or ground overlay, and in a pop-up window when theuser clicks on either a Placemark name in the Places panel, or aplacemark icon on the map. The description element supports plain textas well as HTML formatting. In one particular embodiment, the mappingmodule 130 is programmed or otherwise configured to recognize a validweb URL entered in the description, and to automatically convert the URLto a hyperlink to that URL (e.g., http://www.google.com). Consequently,a URL does not need to be surrounded with the <a href=“http://..”></a>tags in order to achieve a simple link (thereby minimizing need for HTMLmarkup). However, the appearance of the descriptive text can beformatted using HTML to provide font styling and even images, if sodesired. When using HTML to create a hyperlink around a specific word,or when including images in the HTML, entity references or the CDATAelement can be used to escape angle brackets and apostrophes. The CDATAelement tells the XML parser to ignore special characters used withinthe brackets. This element takes the form, for example, of:<![CDATA[special characters here]]>. If it is desired not to use theCDATA element, entity references can be used to replace all the specialcharacters. However, it is most often simplest to use the CDATA elementto enclose the entire HTML string rather than to substitute entityreferences for each special character. The following example illustratesthe description tag used to generate the pop-up illustrated above:

<description><![CDATA[This is an image <img src=“C:\Documents andSettings\My Documents\Icons\icon.gif”> and we have a linkhttp://www.google.com.]]></description>Values of the <description> tag are user-defined. It has no child tags,and can be contained by (i.e., its parent tags): <Document>, <Folder>,<NetworkLink>, <GroundOverlay>, <ScreenOverlay>, and <Placemark>.

Visibility: The <visibility> tag can be used to set the defaultvisibility of a feature (e.g., folder, a placemark, or an overlay) whenfirst opened in the mapping module 130. Visibility applies to allfeatures. However, visibility has special conditions when used onfeatures and overlays within folders. A feature is visible if it and itsancestors have their visibility set to true (1). One can define whetheror not to initially display the feature when the user opens the KMLfile. After opening the KML file, the user has the option to toggle thedisplay of the feature on or off. For example:

<Placemark> <name>The Home Store, Site #3</name><visibility>0</visibility> . . . . </Placemark>Values for the <visibility> tag are as follows: 0 sets defaultvisibility off, and 1 sets default visibility on. Parent Tags in whichthe <visibility> tag can be contained: <Folder>, <Document>,<GroundOverlay>, <Placemark>, and <ScreenOverlay>. The <visibility> taghas no child tags.

View coordinates—The <LookAt> element can be used to specify the viewaround a given point on the planet surface. The mapping module 130 canset the “camera” view for placemarks, folders, overlays, and otherfeatures. When a feature has a specified <LookAt> tag, double-clickingthe item in the Places window causes the mapping module 130 to pan ortilt to achieve the specified view. Note that the view for a featurebears no relationship to the coordinates or extent (longitude/latitude)of the feature. For example, a placemark might be positioned in thecenter of a large plot of land, and the observation coordinates for thatplacemark might look off toward the left corner of the land rather thandirectly down over the placemark itself. In fact, the view for aplacemark can be set so that the geometry itself is not even in view.This behavior can be used to mark a “camera view” of a particularposition that is not associated with any geometry; for example, a viewof the north rim of the Grand Canyon. A placemark could even be set inCalifornia, and the view for that placemark set in New York. When afeature has no <LookAt> tags, double-clicking the feature causes themapping module 130 to zoom to a view directly over the feature. The<LookAt> tag is a complex tag that defines the observation coordinatesor eye point of a parent placemark, folder, or ground overlay. Forexample:

<LookAt> <heading>−0.00895499</heading> <tilt>39.4365</tilt><range>214.17</range> <latitude>37.3895</latitude><longitude>−122.086</longitude> </LookAt>The <LookAt> tag has no values, and can be contained by (i.e., itsparent tags)<Folder>, <Document>, <Placemark>, and <GroundOverlay>. Itcan contain the following (i.e., its child tags): <heading>, <latitude>,<longitude>, <tilt> and <range>. The <heading> tag describes the angulardistance along the horizon to a viewpoint. This is measured from north.The following example shows a heading due west: <heading>−90</heading>.In one particular embodiment, its values are defined with respect to theobservation coordinates (with the value expressed in decimal degrees).It has no child tags. The <latitude> tag defines the distance on theEarth or other target area (e.g., measured in degrees) north or south ofthe equator (e.g., <latitude>33.3205</latitude>). Its values can also bedetermined by the observation coordinates of the particular view (withits units expressed in decimal degrees). It has no child tags. The<longitude> tag defines the distance on the Earth or other target area(e.g., measured in degrees) east (positive values above 0 to 180degrees) or west (negative values below 0 to 180 degrees) of theGreenwich Meridian (e.g., <longitude>−111.965</longitude>). Its valuescan also be determined by the observation coordinates of the particularview (with its units expressed in decimal degrees). It has no childtags. The <tilt> tag indicates the angle of the eyepoint to thedesignated point and ranges from 0 to 90. A value of 0 indicates no tiltand the perspective of looking straight down on the object. A value of90 indicates full tilt and the perspective of a horizon view. The<range> tag determines the distance (e.g., in meters) from the surface(sea level) of the planet at longitude/latitude to the eye point (e.g.,<range>909.907</range>). Its values can also be determined by theobservation coordinates of the particular view (with its units expressedin decimal degrees). It has no child tags. Note that decimal degrees,meters, etc are used for example embodiments herein, but any standard orother suitable GIS notation can be used, as will be appreciated in lightof this disclosure.

Snippet—Use the <Snippet> tag to provide a brief description thatappears beneath the feature when that feature is displayed in the Placespanel (of GUI 201 a of FIG. 3a ). This tag can be used to create a briefdescription when it is desired to override the appearance of the<description> element's content in the Places panel. If a placemarkcontains both a description and a snippet, the snippet appears beneaththe placemark in the Places panel, and a description appears in thedescription balloon. For example:

<Placemark> <name>Google Earth - New Placemark</name> <description>SomeDescriptive text.</description> <Snippet>Here is some snippet inbold</snippet> <LookAt id=“khLookAt780”><longitude>−90.86879847669974</longitude><latitude>48.25330383601299</latitude> <range>440.8490922646644</range><tilt>8.39474026454335</tilt> <heading>2.701112047774894</heading> </LookAt>  <styleUrl>#khStyle721</styleUrl>  <Point id=“khPoint781”><coordinates>−90.86948943473118,48.25450093195546,0</coordinates> </Point> </Placemark>Values of the <Snippet> tag are user-defined text. Its parent is<Placemark>, and it has no child tags.

Network Link Mechanism

A powerful KML feature is the network link. Network links can be used toquickly and easily share KML files among multiple users by sharing alink to the data rather than distributing the data itself. A networklink can be thought of as a folder that has attributes that you candefine and then place on a server (either a local area network server,an Internet web server, or on the local file system). This enables usersto easily obtain dynamic data contained in the network link. Forexample, a user can collect a number of weather satellite imageryoverlays, along with other data that is polled from other servers (e.g.,multiple network links, where one network link can refer to anothernetwork link, and so on, to poll data from multiple sources), and bundleall the information together in a network link that people can open toview weather forecast models superimposed on the earth (or other targetarea). Network links can use all common elements as well as most of thefeatures available to folders.

A “network link” of the interactive GIS described herein can be used toallow sharing of geospatial information across a network with automaticupdate and spatial query functions. In one embodiment, it includes atimer specification for refresh frequency and the ability for the datato be refreshed at some time period after the user has stopped moving.

One particular configuration in which the network link can operateincludes: a geospatial browser (2D or 3D) client software running on aclient machine (e.g., such as mapping module 130 and browser 125 arunning on client 125), and a server hosting a geospatial descriptionfile (e.g., such as third-party content server 140 and the geospatialdescription file 140 a) containing coordinates andlabel/icon/description information (alternatively, a local descriptionfile can be referenced if some other process is updating theinformation). In one such particular configuration, a 3D geospatialbrowser supporting the “KML” geospatial markup language is used, and aserver (e.g., such as one included in server system 105) hosting one ormore changing KML files or a spatial database that returns KML based ona query string and a bounding box for the current view.

As previously explained, KML is an XML schema for defining geospatialmarkup. Main elements of one embodiment include: folders, placemarks(geospatially located icons with labels and an associated description),lines, polygons, image overlays (geospatially oriented images overlayedon top of a base map), screen overlays (screen-aligned images, notgeospatially oriented), and network links. Further details of KML areprovided, for example, in the KML specification included in Appendix Aof the previously incorporated U.S. Provisional Application No.60/694,529, as well as in the previously incorporated U.S. applicationSer. No. 11/426,831, filed Jun. 27, 2006, titled “Markup Language for anInteractive Geographic Information System”. Network links are defined byKML so they can be shared among users, and a network link can load a KMLfile that has additional network links contained within it. KML alsodefines numerous other features of an interactive GIS configured inaccordance with embodiments of the present invention, as will beapparent in light of this disclosure.

The implementation of a network link can be time-based or view-based. Intime-based, the network link specifies how frequently to update the file(e.g., once at startup of the application, and manually refreshed, everyn seconds). When the mapping module 130 of client 125 sees the timer gooff (or gets a manual/startup refresh request), it re-loads thegeospatial description file given its URL (e.g., either on remoteservers, such as “http:// . . . ”, or on local networks such as“\\myServer\ . . . .”, or any other valid network location). The KMLitems contained within the file replace the previous items shown insidethe network link folder. The items visibility can be specified by theKML in the file or the user's choice of visibility in the userinterface.

In view-based, an additional choice for refresh can be implemented(e.g., where the refresh takes place every n seconds after the user hasstopped moving the view). This additional feature allows a network linkto provide the results of a spatial query to simulate a “layer” ofinformation where only the data in the current view needs to be shown.The bounding-box of the current view is appended to the URL (orotherwise sent) so that the server system 105 knows what geospatiallocation the requested data needs to be pulled from. In accordance withone embodiment of the present invention, the view-based network linkenables a dynamic search mechanism for distributed geospatialinformation system, as will be described in turn with reference to FIG.8. Note that the bounding-box of the current view can be sent back onany network link, not just view-based-refresh network links, as will beapparent in light of this disclosure.

A serial number can be attached to each KML item so that when refreshesoccur, existing items can receive modifications without thedelete/replace cycle/cost. Network links could also be implemented as anRSS feed, as will be apparent in light of this disclosure. FIG. 7aillustrates an example screenshot showing a network link feed from theUSGS earthquake monitors, and FIG. 7b illustrates an example screenshotshowing a network link feed for historical flight path data for aircrafton approach to SFO.

Before creating a network link, the target content to which it isdesired to link must exist on a network or web server to which can belinked. If the user is authoring the content, then the content can besaved to a network or web server. In any case, the network location ofthe file, or the URL if it is located on a web server, must be known. Tocreate a network link, the user can, for example, select “network link”from the Add menu of the main menus 325, or click the add network linkcontrol 317, or right-click on a folder in the My Places Panel. In onesuch embodiment of the present invention, the user interaction module201 is programmed to respond to such user actions by opening a newnetwork link dialog box, such as the one shown in FIG. 7c . The user canthen enter the name of the link in the Name field. Likewise, the usercan enter the full path of the corresponding KMZ file (or other suitablefile format) in the URL or Filename text box. Alternatively, the usercan browse to the desired file location if the file is located on anetwork. In the example shown in FIG. 7c , a URL is used to reference aKMZ file (http://www.test.com/myKMZ.kmz). In one particularconfiguration, the 3D viewer (geospatial browser 125 a) immediatelyflies to the default view for the linked data. The user can further setthe desired refresh rate. In this particular example, Time-based Refreshindicates how often the client 125 refreshes checked items in thenetwork link, and includes two options: Once (where each time themapping module 130 is started, it updates any checked items in thenetwork link folder), or Periodically (where the mapping module 130updates checked items based on the time frequency set by the user inhours, minutes, and seconds. The user can also set the desired fetchrate for view-based data. View-Based Refresh is an advanced feature thatis meaningful if the user is connecting to data that displays contentdepending upon the viewing coordinates of the mapping module 130. Forexample, assume the link is to a server that supplies thousands of realestate listings for an entire state, but will deliver only the listingspertinent to the area encompassed in the 3D viewer. Here, the fetch ratecan be set for view-based data depending upon the behavior desired inthe 3D viewer. The choices that can be selected for a View-Based Refreshinclude: Never, On Request, and After Camera Stops. When Never isselected, this feature is left off for data independent of camera view,such as a static overlay image. When On Request is selected,camera-based data is manually updated by right-clicking on the networklink folder and selecting Refresh from the pop-up menu. When AfterCamera Stops is selected, camera-based data is updated after movement inthe viewer stops (a delay of N seconds after a stop may be specified, sothat only view changes that remain unchanged for the specified delayperiod trigger a refresh). This prevents the mapping module 130 fromfetching server updates while the user is moving the viewer, which slowsperformance. Once the user is finished navigating to a new location,data is refreshed at the set interval. For example, the time period isset to 1 second, the server data is fetched every second once movementin the viewer stops. When the user begins navigating again, server datafetching is halted. The user can also enter descriptive text or HTML.This data can be entered, for example, in the same way data would beentered for a regular folder. The text the user enters in thisdescription is the description of the link only, and is not viewable byanyone else linking to the KMZ file. Only the user will be able to seethe description entered here (unless the user emails the link folder toother people). In one such embodiment, this is similar to creating abookmark for a web page and then adding a descriptive note about thebookmark. The user can also set advanced information, if desired. Twoexample advanced options available in the Advanced section include Viewand Style. With the View option, the user can set the view for thetop-level linked folder as done for any folder. With the Style option,style information is available when the items within the linked KMZ fileare all of the same type, such as all placemarks, or all overlays. Ifthere are a mixture of items within the linked folder, no styleinformation is available. However, once the user links the top-levelfolder, information in any child folder can be edited and styleinformation can be set for it, if available.

Thus, a network link can be used to quickly and easily share geospatialinformation (such as KML files, as will be explained in turn) amongmultiple users across a network by sharing a link to the data ratherthan distributing the data itself. A network link configured inaccordance with one embodiment of the present invention has thefollowing KML features: Name, Visibility, and URL. Other relatedfeatures include Folders, Documents, Ground Overlays, Placemarks, andScreen Overlays. Each of these KML features, and others, will bediscussed in turn. Other support KML features will be apparent in lightof this disclosure, and are further described in the previouslyincorporated U.S. Provisional Application No. 60/694,529 and U.S.application Ser. No. 11/426,831.

KML Features

The <NetworkLink> is a complex tag used to define a referenced KML fileon a local or remote network. For example:

<NetworkLink> <refreshVisibility>0</refreshVisibility><refreshInterval>121</refreshInterval> <Url><href>//myServer/Googleearth/example.kmlM.</href> </Url><visibility>1</visibility> <name>TestNetworkLink</name> </NetworkLink>There are no values for the <NetworkLink>, and its parent tags includes<Folder> and <Document>. Child Tags include <refreshVisibility>,<refreshlnterval>, <Url>, <name>, and <visibility>.

Name: as previously discussed.

Visibility: as previously discussed.

URL: Location of the linked KML file (or other script). As previouslyexplained, network links can reference a KML file either on remoteservers (http:// . . . ) or on local networks (\\myServer\ . . . ). TheURL tag is a parent to several child tags that control various aspectsof the link's behavior. These child tags includes: Refresh Interval,Refresh Visibility, Refresh Mode, View Refresh Mode, and View RefreshTime, each of which will now be described.

Refresh Interval—The <refreshlnterval> is a tag used to indicate theperiod of time to refresh the linked data or overlay (e.g., in seconds).In one particular embodiment, if the value is greater than 0, the URL isrefreshed every n seconds. If the value is less than 0, the URL willnever be loaded, and if the value is equal to 0, the URL is loaded once.For example:

<NetworkLink> <refreshVisibility>0</refreshVisibility><refreshInterval>121</refreshInterval><<Url>>//myServer/GoogleEarth/example.kml</<Url>><visibility>1</visibility> <name>TestNetworkLink</name> </NetworkLink>Values for the <refreshlnterval> tag are indicated in seconds. If thevalue is greater than 0, the image or URL is refreshed every n seconds.If the value is less then 0, the image will never be loaded, and if thevalue is equal to 0, the image is loaded once. Parent Tags in which the<refreshlnterval> tag can be contained: <NetworkLink>, <GroundOverlay>,and <ScreenOverlay>. The <refreshlnterval> tag has no child tags.

Refresh Visibility—The <refreshVisibility> tag can be used to maintainor ignore the default visibility of features within the KML document towhich the network link points. In one particular embodiment, values forthe <refreshVisibility> tag are as follows: default value is 0, leavesthe visibility within the control of the mapping module 130; set thevalue to 1 to reset the visibility of features each time the networklink is refreshed. For example, suppose an item in the linked KML filehas a visibility set to 0 and refresh visibility is on (set to 1). Whenthe file is first loaded into the mapping module 130, the check box nextto the item is cleared and the item is not visible in the display window321 of the 3D browser/viewer. If the user selects the item's check box(e.g., such as the check box shown in the Places panel of FIG. 3a ) tomake it visible in the display window 321 of the 3D browser/viewer, theitem will again be cleared once the URL is refreshed. Parent Tags inwhich the <refreshVisibility> tag can be contained: <NetworkLink>. The<refreshVisibility> tag has no child tags.

Refresh Mode—Network Links can be loaded dynamically in one of threeways: on user request, once on document load, or periodically accordingto the value of the refresh interval. The <refreshMode> tag sets thetype of refresh that is done to a network link or ground overlay, eitherrefreshing upon a designated interval or only once upon loading in theclient 125. For example

<Url><href>http://www.example.com/geotiff/NE/MergedReflectivityQComposite.kml</href><refreshMode>onInterval</refreshMode><refreshInterval>30</refreshInterval><viewRefreshMode>onStop</viewRefreshMode><viewRefreshTime>7</viewRefreshTime><ViewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth],[lookatLon],[lookatLat],[lookatRange],[lookatTilt],[lookatHeading]</viewFormat></Url> . . . <Icon><href>http://wdssii.nssl.noaa.gov/geotiff/NW/MergedReflectivityQComposite_20051005-231649.tif?</href> <refreshMode>onInterval</refreshMode> <viewRefreshMode>onRequest</viewRefreshMode> </Icon>With regard to values, onInterval can be used to indicate a time-basedrefresh of the KML or the ground overlay. Use once or leave the tag outto indicate refresh only upon loading of the network link or overlayinto the client 125. The <refreshMode> tag can be contained by <Icon>and <Url>, and has no child tags.

View Refresh Mode—A view-based query can be returned to the serversystem 105 either periodically, according to the view refresh interval,or after a set time has elapsed since the “virtual camera” has stoppedmoving. When active, the mapping module 130 sends an HTTP GET to thesource server system 105 with the coordinates of the view window (e.g.,display window 321 of FIG. 3a ) appended as a BBOX value. In this way,the source server system 105 may then return information in the contextof the active view. The <viewRefreshMode> tag specifies when the mappingmodule 130/client 125 should return the view coordinates to the <href>server (of server system 105). In one particular embodiment, values ofthe <viewRefreshMode> are as follows: onStop will return the coordinatesn seconds after movement in the viewing window has stopped, where n isdefined in <viewRefreshTime>. Parent tags in which the <viewRefreshMode>tag can be contained: <Url>. The <viewRefreshMode> tag has no childtags. The <href> tag, which is a child of the <Url> element and has nochild tags, defines the location of an object such as a network link orthe image to be used as an overlay or icon for a placemark (thislocation can either be on a local file system or a remote web server).In one particular embodiment, parameters of the BBOX are programmablevia a <ViewFormat> tag, which provides substantial flexibility andallows compatibility with other existing web services (e.g., Web MappingService, or WMS). The <ViewFormat> element can be used to select whatview information the mapping module 130 sends to the server 110 in aquery, and allows the user to specify how the mapping module 130 formatsthe query. The <ViewFormat> tag is a child of the Network Link's<Url>,and has no child tags. In one particular embodiment, if this tag is notspecified, the information returned is the WMS-style east, south, west,north bounding-box coordinates. With the <ViewFormat> tag, the user canreturn any of these parameters in whichever order, and also a number ofparameters in the <LookAt> element. The following example returns allpossible information in a comma-delimited string:

<NetworkLink> <name>NE US Radar</name> <flyToView>1</flyToView> <Url><href>http://www.example.com/geotiff/NE/MergedReflectivityQComposite.kml</href><refreshMode>onInterval</refreshMode><refreshInterval>30</refreshInterval><viewRefreshMode>onStop</viewRefreshMode><viewRefreshTime>7</viewRefreshTime><ViewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth],[lookatLon],[lookatLat],[lookatRange],[lookatTilt],[lookatHeading]</viewFormat></Url> </NetworkLink>Values are user defined, and in one embodiment include the followingparameters: [bboxWest], [bboxSouth], [bboxEast], [bboxNorth],[lookatLon], [lookatRange], [lookatTilt], and [lookatHeading]. The</flyToView> tag is a child of <NetworkLink> and <NetworkLinkControl>,and has no child tags. When set, updated KML (or other script) from the3^(rd) party content server causes the viewer to update to the currentview. This tag can be used for such situations as alerts ornotifications where the current 3D view in the client is effectivelyoverridden, or in situation where two or more users wish to share eachother's links (e.g., virtual rendezvous). Its values are Boolean (e.g.,0 for off, 1 for on). The default value is off if the tag is notspecified. In a virtual rendezvous, there is a “lead” client/user and atleast one “follower” client/user. The <flyToView> tag operates as aclient-side configuration that directs the follower client to fly towhatever the results the lead client is viewing. The 3^(rd) party serverbeing accessed by the lead is generally referred to herein as arendezvous server. A user wishing to follow the lead of another personexploring the area covered by GIS can enable this feature, for example,by checking a UI checkbox for that particular lead-follow network link(and can disable that link by unchecking). In an alert/notificationapplication, the <flyToView> tag is a child of <NetworkLinkControl> andis returned as part of the contents. This means the 3^(rd) party contentserver can optionally tell the client to fly to a location (e.g., foralerts or important notifications). The network link fires periodically(e.g., every minute), but most of the time nothing important isreturned, so the user's view remains under his control, but in a serioussituation, the 3^(rd) party content server sets this <flyToView> tag andthe client is forced to (at least start to) fly there. An example use ofthe <flyToView> tag is as follows:

<?xml version=“1.0” encoding=“UTF-8”?> <kmlxmlns=“http://earth.google.com/kml/2.0”> <NetworkLink> <name>NE USRadar</name> <flyToView>1</flyToView> <Url><href>http://www.example.com/geotiff/NE/MergedReflectivityQComposite.kml</href><refreshMode>onInterval</refreshMode><refreshInterval>30</refreshInterval><viewRefreshMode>onStop</viewRefreshMode><viewRefreshTime>7</viewRefreshTime><ViewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth],[lookatLon],[lookatLat],[lookatRange],[lookatTilt],[lookatHeading]</viewFormat></Url> </NetworkLink> </kml>The <NetworkLinkControl> tag, which has no values and is a child of<Document>, controls the behavior of files fetched via <NetworkLink>.Using this feature, the user can access a number of features via itschildren, including the <flyToView> tag as previously discussed. Otherchildren include, <minRefreshPeriod>, <message>, <cookie>,<linkDescription>, and <linkName>. The <minRefreshPeriod> element can beused as a server throttle to limit the number of fetches to the 3^(rd)party content server to a specified minimum period. For example, if auser sets a link refresh to 5 seconds, the minimum refresh period can beset to 3600 to limit refresh updates to every hour. A<message> enablespop-up messages, such as usages guidelines for a network link can bedelivered via the <NetworkLinkControl> tag. In one particularembodiment, the message appears only once each time the network link isloaded into the client, or if the message text is updated on the server.The <cookie> element can be used to append the text to the URL query onthe next refresh of the network link. This can be used, for example, inthe script to provide more intelligent handling on the server-side,including version querying and conditional file delivery. The <linkName>and <linkDescription> of the network link can also be controlled fromthe server, so that changes made to the name and description on theclient-side can be over-ridden by the server. Example use of<NetworkLinkControl> is as follows:

<NetworkLinkControl> <message>This is a pop-up message. You will onlysee this once</message> <cookie>someCookieText</cookie> <linkName>NewKML features</linkName> <linkDescription><![CDATA[KML now has newfeatures available!]]></linkDescription> </NetworkLinkControl>

View Refresh Time—The <viewRefreshTime> tag specifies the frequency withwhich to return the view coordinates to the server system 105. Value ofthe <viewRefreshTime> tag is an integer representing seconds. Parenttags in which the <viewRefreshMode> tag can be contained: <Url>. The<viewRefreshMode> tag has no child tags.

Folders: Most uses of KML employ folders to organize placemarks, screenand ground overlays, and other folders. Folders can be used to quicklyidentify placemark and overlay groups, to provide a unified view for agroup of placemarks and/or overlays. Folders offer a number of elements,and in one particular embodiment include the following:

Name and Description—Each folder can have its own name and descriptionattributes.

Visibility—A switch (0 or 1) that controls whether or not the contentsof the folder will be visible in the viewing window when the folder isloaded.

Open—A switch (0 or 1) that controls whether or not the folder will bein an expanded or collapsed state when it is loaded.

LookAt—By setting a virtual camera view for a folder, a consistentdisplay can be provided for all the features within the folder,regardless of the camera view set for the individual features. Forexample, assume different views are specified for a collection ofplacemarks to highlight characteristics of each placemark. However, witha double-click on the parent folder, the view can shift to one designedto best display all placemarks as a collected group. In one embodiment,if there is no LookAt specified for a particular folder, double-clickingthe parent folder will fly to the superset bounding box of the childrenof that folder.

Logical containment of related data, and folder nesting—a folder can beused to contain related placemarks, overlays, and other folders. Byproviding folders with a name and LookAt values, information can begrouped in way to make it easily identifiable and manageable. Forexample, a folder can be used to associate a placemark with a relatedoverlay image file for a multi-layered view of a particular region.

Also, a hierarchical structure can be created in a manner similar to theMicrosoft Windows folder view, so that folders can be expanded orcollapsed to reveal or hide content as needed. The mapping module 130can be programmed or otherwise configured to allow a user to drag anddrop folders on top of other folders in order to nest them. In KML,<Folder></Folder> tags nest within each other, in the same way that<table></table> tags can be nested in HTML.

The <Folder> is a complex, top-level, optional tag used to structurehierarchical arrangement of other folders, placemarks, ground overlays,and screen overlays. This tag is can be used to structure and organizeinformation in the mapping module 130. For example:

<Folder> <name>Name of Folder</name> <description>Descriptivetext</description>  <Folder> <name>SubFolder #1 Name</name><description>Descriptive text</description> <Placemark> [placemark datahere ...] </Placemark> </Folder> <Folder> <name>SubFolder #2 Name</name><description>Descriptive text</description> <Placemark> [placemark datahere ...] </Placemark> </Folder> </Folder>The <Folder> tag has no values, and can be contained by the following(i.e., its parent tags): <Document>, <Folder>, and <NetworkLink>. The<Folder> tag can contain the following tags (i.e., its child tags):<Folder>, <name>, <description>, <LookAt>, <visibility>, <Placemark>,<GroundOverlay>, <ScreenOverlay>, <NetworkLink>, and <Document>.

Documents: A document is a type of folder that can also contain the<Styles> and <Schemas> tags in addition to features such as placemarks,overlays and folders. Documents can be used to group styles and schemasfor a collection. Documents are also often root-level containers of KMLhierarchies. When styles or schema are needed for data, the <Document>element can be used to contain these other elements. Styles can be usedto add custom icons and color and/or size information to geometry.Schemas can be used when a data collection contains features that arenot native to KML. With schemas, a feature and its associated meta-datacan be defined so that it is correctly displayed in the mapping module130. As a root level element for KML documents, the <Document> tag actsas a folder for the elements it contains. As explained above, this tagcan be used if a KML file requires schemas or styles; otherwise, it isnot required. For example:

<Document> <Style id=“my_style”> <Icon>./images/my_image.png</Icon></Style> . . . . </Document>The <Document> tag has no values and no parent tags. Its child tagsinclude <Folder>, <name>, <description>, <LookAt>, <visibility>,<Placemark>, <GroundOverlay>, <ScreenOverlay>, <NetworkLink>, and<Document>.

Placemarks: Placemarks are the primary means of marking a point on theearth (or other mapped area). A placemark typically has an iconassociated with it that marks a point on the target surface such as theEarth; however, a placemark can also be associated with a path, apolygon and/or a 3D shape. The <Placemark> tag is a complex tag used todescribe a placemark. Coordinates can be specified as [longitude,latitude, altitude] where: longitude is between −180 and 180; latitudeis between −90 and 90; and altitude is in meters from the surface of thespheroid (WGS84, World Geodetic System 1984) which represents the planet(this is roughly sea level; locations below the surface areautomatically displaced onto the surface). In addition, a number ofother elements can be defined for placemark entries, includingobservation coordinates, name, and description. For example:

<Placemark> <name>Queen Creek</name> <LookAt><longitude>−111.634</longitude> <latitude>33.2407</latitude><range>5571.15</range> <tilt>−0.0129749</tilt><heading>−0.0651017</heading> </LookAt> <visibility>1</visibility><StyleUrl>root://styleMaps#default?iconId=0x300</StyleUrl> <Point><coordinates>−111.634,33.2486,413.037</coordinates> </Point></Placemark>The <placemark> tag has no values, and can be contained by (i.e., itsparents)<Folder> and <Document>. It can contain the following tags andtheir children, where applicable: <description>, <LookAt>, <LineString>,<Multigeometry>, <name>, <Point>, <StyleUrl>, <Style>, and <visibility>.The <LineString> tag defines a line using a string of coordinates. The<Multigeometry> tag is utilized to group more than one geometry element,such as multiple polygons used to define a single feature. The <Point>tag defines the geographic location of a point coordinate. With KML, thestyle of a placemark can be customized in a variety of ways. The <style>tag specifies styles for placemarks. In addition, the <StyleUrl> tag canbe used to reference an externally-defined style. In one embodiment, the<Document> tag can include a <StyleMap> tag with a value that specifiesnormal and highlighted icons for a placemark, so that the highlightversion appears when the cursor moves over the icon. Through the use ofthese tags, the creator of a KML file can ensure that the presentationof a placemark described by the file will render the same way across allof the clients 125. Through the use of the <style> tag, a KML file candefine the appearance of icon, label, line, polygon, and descriptiveballoon elements in the viewer. Styles in one embodiment of KML caneither be defined locally within the element being affected, orreferenced by an ID and reused among many elements. In many cases, it ismore efficient to design classes of styles up front and refer to them asneeded, using local styles sparingly for one-off effects. Additionalstyle details are provided in the previously incorporated U.S.Provisional Application No. 60/694,529, as well as in the previouslyincorporated U.S. application Ser. No. 11/426,831, filed Jun. 27, 2006,titled “Markup Language for an Interactive Geographic InformationSystem”.

Image Overlays: Image overlays can be described in KML for addingimage-based meta-data to your GIS data in the Google Earth client. Thereare two types of overlays: Ground overlays and Screen overlays.

Ground overlays are used for information-rich site display such asphased plans or weather maps. Ground overlays are images that are fixedto the planet surface. <GroundOverlay> is complex tag that contains tagsfor defining and placing an overlay image on the globe (or other mappedarea). For example:

<GroundOverlay> <visibility>0</visibility> <Icon><href>C:/GoogleEarth/example.jpg</href> </Icon> <drawOrder>0</drawOrder><LatLonBox> <rotation>36.9994</rotation> <north>39.3082</north><south>38.5209</south> <east>−95.1583</east> <west>−96.3874</west></LatLonBox> </GroundOverlay>The <GroundOverlay> tag has no values, and can be contained by anyabstract folder. It can contain the following (i.e., its child tags):<drawOrder>, <Icon> (required), <LatLonBox> (required), <visibility>,and <rotation>.

A screen overlay is a “floating” image independent of the position ofthe viewer and is fixed to the screen. <ScreenOverlay> is a complex tagthat contains tags for defining and placing an overlay image on thescreen. Example KML code for placing an image (with original width,height and aspect ratio) at the exact center of the screen looks asfollows:

<?xml version=“1.0” encoding=“UTF-8”?> <kmlxmlns=“http://earth.google.com/kml/2.0”> <ScreenOverlayid=“khScreenOverlay756”> <description>This screen overlay usesfractional positioning to put the image in the exact center of thescreen</description> <name>Simple crosshairs</name><visibility>0</visibility> <Icon><href>http://myserver/myimage.jpg</href> </Icon> <overlayXY x=“0.5”y=“0.5” xunits=“fraction” yunits=“fraction”/> <screenXY x=“0.5” y=“0.5”xunits=“fraction” yunits=“fraction”/> <rotationXY x=“0.5” y=“0.5”xunits=“fraction” yunits=“fraction”/> <size x=“0” y=“0” xunits=“pixels”yunits=“pixels”/> </ScreenOverlay> </kml>The <ScreenOverlay> tag has no values, and can be contained by (i.e.,its parent tags) <Folder> and <Document>. It can contain the following(i.e., its child tags): <drawOrder>, <Icon> (required), <visibility>,<rotation>, <size>, <screenXY>, and <overlayXY>.

Common Overlay Features: The following features are shared by bothground and screen overlays: Name, Description, Default visibility, DrawOrder Location of image file, Rotation, and Refresh Interval (each nowdiscussed in turn).

Name—As previously explained with reference to the <name> tag, anoverlay can have a name.

Description—Likewise, an overlay can have a description, as previouslyexplained.

Default visibility—The display of overlays can be toggled so thatmultiple overlays in a given location can be used with minimal confusion(as previously discussed with reference to the <visibility> tag).

Draw Order—When using overlapping overlays, the <drawOrder> tag can beused to define the overlay stacking order. In this way, for example,overlay images with black boundary edges or masked boundaries can beassigned a lower number than adjacent overlays so as not to obscureuseful information. The <drawOrder> tag is a child of <GroundOverlay>and <ScreenOverlay>. The default value is 0. Overlays with a higher draworder values are drawn on top of overlays with lower draw order values.For example: <drawOrder>0</drawOrder>. Values of the <drawOrder> tagrange from 0 to 99. The <drawOrder> tag has no child tags.

Location of image file: As previously explained, the <Url> tagreferences the overlay image file either locally or remotely, such as ona corporate web server. Remote users do not have to have a local copy ofan overlay image if the image is supplied remotely. In this way,real-time updates of overlay data, such as weather or developmentprogress of site plans, can be provided. In one particular embodiment,the following image types are supported: JPG, PNG, GIF, and TIFF (otherformats will be apparent in light of this disclosure).

Rotation—In one particular embodiment of the present invention, therotation of the overlay image can be set. The image can be rotated up to180 degrees in a clockwise (positive) or counter-clockwise (negative)rotation from north. The <rotation> tag is a tag and child of the<ScreenOverlay>, <GroundOverlay>, and <LatLonBox> elements. It can beused to specify the rotational axis of the image from its center point.Values of the <rotation> tag can range from +/−180 degrees to indicatethe rotation of the image from 0, which is the default orientation ofthe image. The <rotation> tag has no child tags.

Refresh Interval—As previously explained, the <refreshlnterval> tagindicates the period of time (e.g., in seconds) to refresh thereferenced image. This element can be used, for example, for real-timeapplications such as web cameras where images are updated on a specificfrequency. Both ground overlays and screen overlays may be refreshedusing the <refreshlnterval> tag.

Other Ground Overlay Features: In KML, ground overlay tags can be placedinside any folder or subfolder in a KML document. Ground overlayssupport the following elements:

<LookAt>—As with placemarks, the observation coordinates for a groundoverlay can be set (as previously discussed).

Mapping Coordinates of the Image Overlay Points—Four coordinates set theedges of the overlay. These coordinates set the North-South (latitude),East-West (longitude) positions of the overlay boundaries. In addition,the overlay's rotation, which is about the center of the overlay, can beindicated. In browser/viewer 125 a, the user can drag and rotate theoverlay in order to set the coordinates, or can enter desired values(e.g., by operation of GUI 201 a of the mapping module 130).

Other Screen Overlay Features: Screen overlays can be used for aconsistent display of information regardless of the viewing placement,such as heads up display, co-branding, or other types of dashboarddisplay. As with ground overlays, multiple screen overlays can bedefined and associated with a folder. The position can be defined as anabsolute coordinate position in the viewer 125 a, or as a percentage ofthe viewer 125 a size. The opacity of a screen overlay can also be set.Screen overlays in accordance with one embodiment of the presentinvention have one or more of the following additional features:

Screen position—Two mechanisms for screen positioning provideflexibility in different presentation formats. The position of thescreen image can be determined using X/Y coordinates either with exactpixels, or as a fraction of the overall screen. The <overlayXY> tag is asimple field and child of the <ScreenOverlay> element; it has no childtags. The <overlayXY> tag defines the coordinate point on the overlayimage itself that will be used to map to the screen coordinate. Itrequires X and Y values, and the units for those values (e.g., eitherpixels or fraction). For example, <overlayXY x=“1” y=“1”xunits=“fraction” yunits=“fraction”/> affects the upper right corner ofthe image. Used with <screenXY of x=“−50” y=“0.9” xunits=“pixels”yunits=“fraction”/>, this measurement places the upper right corner ofthe image 50 pixels inset from the right edge of the screen and 10%below the top edge of the screen. The x and y components can bespecified in one of the following ways: placing an image in the centerof the screen:

<overlayXY x=“0.5” y=“0.5” xunits=“fraction” yunits=“fraction”/><screenXY x=“0.5” y=“0.5” xunits=“fraction” yunits=“fraction”/>or placing an image at the top left of the screen:

<overlayXY x=“0” y=“1” xunits=“fraction” yunits=“fraction”/> <screenXYx=“0” y=“1” xunits=“fraction” yunits=“fraction”/>or placing an image at the right of the screen:

<overlayXY x=“1” y=“1” xunits=“fraction” yunits=“fraction”/> <screenXYx=“1” y=“1” xunits=“fraction” yunits=“fraction”/>.The <screenXY> tag is a simple field and child of the <ScreenOverlay>element; it has no child tags. The <screenXY> tag defines the coordinatepoints on the screen itself that the overlay image will be mapped to.For example, a screenXY of (−50, 0.9) with an overlayXY of (1,1) placesthe upper right corner of the image 50 pixels inset from the right edgeof the screen and 10% below the top edge of the screen. The x and ycomponents can be specified in one of the following ways: placing animage in the center of the screen:

<overlayXY x=“0.5” y=“0.5” xunits=“fraction” yunits=“fraction”/><screenXY x=“0.5” y=“0.5” xunits=“fraction” yunits=“fraction”/>or placing an image at the top left of the screen:

<overlayXY x=“0” y=“1” xunits=“fraction” yunits=“fraction”/> <screenXYx=“0” y=“1” xunits=“fraction” yunits=“fraction”/>or placing an image at the right of the screen:

<overlayXY x=“1” y=“1” xunits=“fraction” yunits=“fraction”/> <screenXYx=“1” y=“1” xunits=“fraction” yunits=“fraction”/>.The <size> tag is a simple tag and child of the <ScreenOverlay> element;it has no child tags. The <size> tag is used to indicate the width andheight of the overlay image based on the screen size. Use of the sizetag is best illustrated by example. To force the image to maintain itsnative height, width, and aspect ratio, set the values to zero: <sizex=“0” y=“0” xunits=“fraction” yunits=“fraction”/>. To force the image toretain its horizontal dimension, but to take up 20% of the verticalscreen space: <size x=“0” y=“0.2” xunits=“fraction” yunits=“fraction”/>.To force the image to resize to 100px by 500px: <size x=“100” y=“500”xunits=“pixels” yunits=“pixels”/>.

Dynamic Search Mechanism for Distributed Geospatial Information System

GISs often use a layered information metaphor. Such data layerscorrespond to individually selectable collections of predefinedgeospatial data, where the layers are large and not tied to the viewarea. For example, one layer might be “STATE NAMES” and a second layermight be “HIGHWAYS”; in the first case, the data could be text centeredat the geographic midpoint of each state; in the second, the data couldbe lines representing surveyed centerlines of each major roadway. Thedata might be all the states or all the highways. A user in such asystem could enable just the state names layer, the highway layer, both,or an analytic composition of the two. Having enabled these layers, asthe view location moves through the database (such as from San Diego,Calif. to Portland, Me.), the corresponding highways and/or state nameswill be displayed. These general ideas are well understood in the GISdeveloper and user communities.

One embodiment of the present invention is a mechanism to extend thecommon layer of predefined data class having universal extent metaphorinto the domain of arbitrary search queries by using view-basedpersistent search to emulate a preexisting search-specific data layer.In one such embodiment, a search request is stored, such as “find thelocation of ceramic supply stores selling Penrose tiles” in a mechanismreferred to herein as a view-dependent network link (VDNL). In one suchparticular embodiment, a VDNL data structure includes any informationneeded to perform this query, such as one or more of names of remotesearch servers (such as “www.google.com” or “local.google.com”),importance of search, information related to quality of service, andhistorical search latencies and search results. This informationcontained in the VDNL data structure is generally referred to herein asa VDNL search specification.

FIG. 8 illustrates a method for providing layered information in a GIS,in accordance with one embodiment of the present invention. The methodcan be carried out, for example, as a set of executable instructionsrunning on a client 125 that is in communication with one or moreservers. The functionality can be integrated into dedicated client-sidemodules, and/or into modules discussed with reference to FIG. 2a , aswill be apparent in light of this disclosure.

The method includes detecting 803 on-screen view changes, and generating805 a geospatial search region defined by the instantaneous viewspecification. The on-screen view changes can be caused, for example, bychanging the view position, view orientation, or view specification.Such changes can be affected by the user manipulating interface controlsof the GUI 201 a, such as the pan control 311, tilt control 315, androtation controls 327. In short, when such user input is received, theview specification changes. As previously explained, the renderer usesthe view specification to determine whether drawable payload of a quadnode resident in the quad node tree is not to be drawn. The renderer canalso dynamically generate the geospatial search region defined by theinstantaneous view specification (recall that the renderer reads theview specification on a periodic basis).

The method continues with determining 807 if the relative view change isgreater than a predefined threshold. This determination dictates whethera VDNL search query is triggered (or not) by the motion of the viewspecification. In more detail, the search initiation consideration isbased in part on the relative change between the resulting view and theformer view (e.g., based on view parameters such as position,orientation, and pose). When the relative view change is not greaterthan the threshold or otherwise deemed slight (e.g., less than a 5%change to each monitored view parameter), then the method continues withsuppressing 809 the VDNL search. Thus, no new layer of data will beprovided (method terminates, and waits to detect a new change in viewspecification).

However, when the relative view change is greater than the threshold,then the method continues with contacting 811 a search server identifiedby the VDNL search specification (e.g., included in the VDNL datastructure) to initiate a search request for layer data, and submitting813 the VDNL search specification and the dynamically generatedgeospatial search region defined by the instantaneous viewspecification. The search server can be a local or remote search serverthat is specified in the search specification. The specified server thenretrieves the data that is responsive to the request, based on thedynamically generated geospatial search region defined by theinstantaneous view specification, and in accordance with parameters ofthe search specification. Thus, the view-dependency of the VDNL derivesfrom the view-based search region.

The method continues with receiving 815 the results of search, anddisplaying those results as contents of virtual data layer. Thus,results of an implicitly-spawned VDNL search are returned to the mappingmodule 130, which then renders the virtual data layer as an overlay onthe underlying map area or other target region. This view-based datalayer is sufficient to provide the illusion of a universal data layersatisfying the stored search request if the VDNL search and responseprocess described in steps 803 through 815 complete within a smallportion of the per-frame image update interval of the mapping module130, which in one case is 1/60^(th) of a second or less when advanceddisplay devices and/or stereo viewing techniques are used. Other refreshdisplay intervals and mapping module 130 update intervals will beapparent in light of this disclosure.

Depending on the system's per-frame display interval capability, someembodiments may be further configured to reduce search latencyassociated with steps 811 and/or 813 (e.g., in embodiments where arefresh interval every 1/60 of a second in not practical). In oneparticular case, search latency can be mitigated by requesting searchresults for a larger area than the current view region (on-screen)demands. This results in the return of an off-screen “border region” ofsearch results that is not immediately useful or mandated by the viewfrustum, but will be usefully available for display of future frames asthe view specification is moved into this search-result border zone,which is likely with continuous motion of the viewpoint. This embodimentof the method effectively creates a “search latency buffer” by enlargingthe geospatial search area beyond the instantaneous view extent toinclude a border mandated by a specified border width profile (e.g.,defined in VDNL data structure). This border width profile may be, forexample, uniform around the view frustum, non-uniform to reflect a biasbased on an anticipated direction of motion of the view specification,or otherwise resized from the instantaneous view. Anticipated directionof motion can be based, for instance, on historical user data, metrics,and/or other predictors of future motion. In addition, note that theoff-screen border region can be provided only on one to three sides ofthe view frustum, and need not be completely around the view frustum.

In addition, or as an alternative, dynamic control of the border regionwidth profile can be achieved based on historical observation of searchlatency and viewpoint motion. The goal here is to have a border arealarge enough that the on-screen view is unlikely to reach the outerlimit of the border zone before a new search can be initiated and theresults received and processed. The dynamic border width profilecomputed to provide sufficient “latency margin” may be the sole term indetermining the border width profile used to resize the instantaneousview frustum. To avoid large swings in margin size when the view movesfrom a stopped state to a moving state, the computation of effectiveborder width profile may use a weighted combination of former widthprofile and newly determined dynamic width profile, and may also imposeone or more of: a lower limit based on desired quality of service, andan upper limit based on search server limits or bandwidth constraints oran overall adjustment based on relative importance of this particularVDNL compared to others that may be simultaneously active. Thus, and inaccordance with one particular embodiment, the method may furtherinclude modulating and offsetting a static latency-hiding border widthprofile specified in the VDNL data structure based on dynamiccircumstances. Such functionality effectively optimizes the searchserver's burden by scaling the latency-hiding technique to match theexpected near-term demand, specifically by using a smaller buffer whenthe viewpoint is moving slowly and steadily.

The dynamic VDNL methodology described herein allows the presentation ofgeospatial search results resulting from a discontinuous sequence ofspatially bounded ad-hoc geospatial searches in such a way that a userperceives a continuous data layer much like pre-computed data layerstypical in conventional GISs. These VDNL-based virtual layers fill auser's virtual view with results based on an initial query to an initialview specification. The layers may appear universal in their contentbecause results move on-screen smoothly with view specification changeshaving been pre-fetched within the extent of an adjusted geospatialextent (e.g., based on border region as previously described). As willbe appreciated, the VDNL mechanism can be conservative in networktraffic, search server requests, and local processing due to the dynamicadjustment of border width profile based on factors such as rates ofview change and measured server latency.

Thus, the network link is a mechanism that can be used to iterativelyfetch remote content for a GIS application, such as mapping module 130.The time-based network link fetches placemark files (e.g., KML/KMZ, aspreviously discussed) when triggered to do so by the passage of time(“Get file X every 20 seconds”). The view-dependent network link makes asearch query when triggered by the motion of the view specification.

Numerous variations and implementations of the VDNL mechanism will beapparent in light of this disclosure. For instance, a network link thatis the receiving endpoint, for example, of an RSS or an atom feed can beimplemented. Such a network link could be used in an application, suchas: “Listen to the news feed from CNN.com and whenever something newarrives, geolocate the story and display a new icon on the globe.”Optionally, the view can be moved to see the new geolocated item,thereby giving the user additional perspective on the news story.

The VDNL data structure itself can vary, depending on the particularapplication. In general, it is a collection of information sufficient torepresent the VDNL stored search activity. Example internal elementsinclude: what was sent last time (the list of search results); when thelast search was submitted (wall-clock time); and an integer describingthe size of the following arrays: recent search positions[ ] (e.g., anarray of real-valued 4-tuples giving a lat/lon bounding box for recentsearch requests); recent search border width profiles[ ] (e.g., an arrayof real numbers indicating size of instantaneous view-frustum expansionadjustment); and recent search latencies[ ] (e.g., an array of realnumbers indicating time to complete corresponding search request). Notethat the VDNL data structure could also be represented internally as anarray of structures (classes) with methods corresponding to thesevalues.

Ambiguous Search Requests

Another embodiment of the present invention enables ambiguous searchrequests in an interactive GIS. As previously stated, information searchcapabilities present in conventional GISs require a user to disambiguatethe nature of a search request, selecting search scopes like “addresssearch” or “lot number search” as either an explicit component of thesearch process or implicitly by allowing only a single scope (most often“address”) within which all search requests are interpreted.

In contrast, one particular embodiment of the present invention enablesa single text entry field into which an arbitrary search string may beentered (e.g., such as text input field 303 of FIG. 3a ). This searchstring is inspected locally in the mapping module 130 (e.g., userinteraction module 201), by one or more associated remote servers (e.g.,of server system 105), or by a combination of local and remoteprocessing to estimate the scope within which the search request isintended. Examples of this approach include disambiguating addressspecifications, telephone numbers, credit card numbers, place names,roadway intersections, personal names, shipping-service trackingnumbers, and similar scopes.

The interactive GIS according to an embodiment of the present inventioncarries out this disambiguating automatically by inspecting the searchspecification, examining the characters and digits that comprise it,using this result to rank potential candidate search scopes, and thenperforming a search within the one or more likely scopes. In this waythe user of a GIS is allowed to perform general searches across a largerange of search scopes with greater ease and utility than has formerlybeen known in the art of geospatial information system design. Withinthe context of a GIS, the search request, once disambiguated by theexamination process described herein, is then used as a search keywithin the estimated scope. The results of this search are then returnedto the user in visual form as geospatial markers, lines, areas, text,and/or other annotations in the geospatial environment, in tabular ortextual form, or in a combination of these presentation mechanisms.

An example of this mechanism would be entering the value“1ZA722W80328050424” into the GIS search mechanism of a client 125configured in accordance with the principles of the present invention.By inspection based on rules of proper composition, this value can beconfidently estimated to be a valid form of tracking identifier useduniquely by a shipping service (e.g., United Parcel Service) to specifya particular item being shipped. With the scope having been estimated as“UPS Parcel Identifier”, the search can be interpreted as “find the UPSparcel #1ZA722W80328050424”. The results of this search could be aparcel status (e.g., pending, in transit, received), and when intransit, a location such as the last known position of the item. Ageospatial place identifier (such as latitude and longitude or streetaddress) could be returned by the search to the mapping module 130, andthis location specification could cause the renderer module 207 to drawa marker, such as the UPS Corporation's brown shield logo, at theindicated geospatial position. In this way a user could simply copytheir (ambiguous) shipping information into a GIS search mechanism of aclient 125 and receive a visual indication in return to identify theitem's presently known location.

Further, clicking-on or otherwise selecting this brown shield logo couldcause the display of detailed information about the item, such as timein transit, estimated time of delivery, name and signature of signer fordelivered items, and similar information. Other such examples will beapparent in light of this disclosure (e.g., location/tracking ofcommercial airplanes and other commercial carriers; location/tracking ofsports teams, entertainers, and other traveling entities). In any case,an interactive GIS configured in accordance with an embodiment of thepresent invention enables automated disambiguation of diverse searchspecifications.

Rules of proper composition recognize established patterns, and includethe following examples: U.S. zip codes are numeric in the form 55555 or55555-4444, which is likely to be a zip code; U.S. phone numbers arenumeric in the form 333-4444, (333) 333-4444, 333-333-4444, 1-333-4444,1-333-333-4444, +1 (333) 333-4444, etc.; AMEX card numbers have ‘n’digits with a leading value of xxx; California driver's license numbersstart with CA and have ‘n’ digits (other states have similar patternsthat can be recognized); UPS intra-continental-US parcel tracking codeshave ‘n’ characters, start with a known series, etc; and Greek postaladdresses have a known and recognizable format.

Thus, one such embodiment employs rules of proper composition, each witha probability of being correct when matched. The rules of propercomposition are applied against the ambiguous search, and the list ofprobabilities corresponding to the rules that are matched are evaluated.For instance, if one match, then search in that context. If one strongmatch, with others having much lower probability, then search in thestrong-match context. If multiple matches of high probability,generate/display a “Did you mean . . . ” dialog box and let the userdisambiguate or otherwise clarify interactively; then remember theuser's choice. If multiple matches, none of high probability, thengenerate/display a “Not understood” dialog box asking for moreinformation, or perform a general search (such as Google web search orGoogle local search or other search engine) using the ambiguous searchstring.

The foregoing description of the embodiments of the invention has beenpresented for the purposes of illustration and description. It is notintended to be exhaustive or to limit the invention to the precise formdisclosed. Many modifications and variations are possible in light ofthis disclosure. It is intended that the scope of the invention belimited not by this detailed description, but rather by the claimsappended hereto.

What is claimed is:
 1. A method for automatically updating digital maps,the method comprising: receiving, by one or more processors in a clientdevice via a communication network from a geographic information systems(GIS) server system, geographic information for generating interactivedigital maps; generating, by the one or more processors in the clientdevice, a digital map of a geographic area using the received geographicinformation; receiving, by the one or more processors in the clientdevice via the communication network from the GIS server system, ageospatial description file that includes a designated location and aviewpoint of a virtual camera for viewing the designated location,wherein the viewpoint is unrelated to geometry specified by thedesignated location, such that the designated location is not withinview; and presenting, by the one or more processors in the clientdevice, an indication of the designated location on the digital map, thedigital map presented from the viewpoint of the virtual camera.
 2. Themethod of claim 1, further comprising: presenting, by the one or moreprocessors in the client device, the digital map of the geographic areafrom an initial viewpoint of the virtual camera; presenting, by the oneor more processors in the client device, a user control for viewing thedesignated location; and in response to receiving a selection of theuser control, presenting, by the one or more processors in the clientdevice, an indication of the designated location on the digital map andadjusting a view of the digital map from the initial viewpoint of thevirtual camera to the viewpoint from the geospatial description file. 3.The method of claim 1, wherein the viewpoint of the virtual camera forviewing the designated location includes one or more of: a location ofthe viewpoint, a heading for the viewpoint indicative of a direction thevirtual camera is facing, a tilt angle for the viewpoint, or a rangeindicative of the distance from a surface to the viewpoint of thevirtual camera.
 4. The method of claim 1, wherein the geospatialdescription file is consistent with a Keyhole Markup Language (KML) orcompressed KML (KMZ) specification.
 5. The method of claim 1, whereinreceiving the geospatial description file includes iteratively fetchingcontent from a third-party content server using a view-dependent networklink (VDNL).
 6. The method of claim 5, wherein using the view-dependentnetwork link (VDNL) includes submitting, by the one or more processors,a VDNL data structure that specifies the third-party content server. 7.The method of claim 1, wherein generating the digital map includesgenerating a 3D satellite image map.
 8. A client device comprising: oneor more processors; and a non-transitory computer-readable mediumstoring thereon instructions that, when executed by the one or moreprocessors, cause the client device to: receive, via a communicationnetwork from a geographic information systems (GIS) server system,geographic information for generating interactive digital maps; generatea digital map of a geographic area using the received geographicinformation; receive, via the communication network from the GIS serversystem, a geospatial description file that includes a designatedlocation and a viewpoint of a virtual camera for viewing the designatedlocation, wherein the viewpoint is unrelated to geometry specified bythe designated location, such that the designated location is not withinview; and present an indication of the designated location on thedigital map, the digital map presented from the viewpoint of the virtualcamera.
 9. The client device of claim 8, wherein the instructionsfurther cause the client device to: present the digital map of thegeographic area from an initial viewpoint of the virtual camera; presenta user control for viewing the designated location; and in response toreceiving a selection of the user control, present an indication of thedesignated location on the digital map and adjusting a view of thedigital map from the initial viewpoint of the virtual camera to theviewpoint from the geospatial description file.
 10. The client device ofclaim 8, wherein the viewpoint of the virtual camera for viewing thedesignated location includes one or more of: a location of theviewpoint, a heading for the viewpoint indicative of a direction thevirtual camera is facing, a tilt angle for the viewpoint, or a rangeindicative of the distance from a surface to the viewpoint of thevirtual camera.
 11. The client device of claim 8, wherein the geospatialdescription file is consistent with a Keyhole Markup Language (KML) orcompressed KML (KMZ) specification.
 12. The client device of claim 8,wherein to receive the geospatial description file, the instructionscause the client device to iteratively fetch content from a third-partycontent server using a view-dependent network link (VDNL).
 13. Theclient device of claim 12, wherein to use the view-dependent networklink (VDNL), the instructions cause the client device to submit a VDNLdata structure that specifies the third-party content server.
 14. Themethod of claim 8, wherein generating the digital map includesgenerating a 3D satellite image map.
 15. A non-transitorycomputer-readable medium storing thereon instructions that, whenexecuted by one or more processors, cause the one or more processors to:receive, via a communication network from a geographic informationsystems (GIS) server system, geographic information for generatinginteractive digital maps; generate a digital map of a geographic areausing the received geographic information; receive, via thecommunication network from the GIS server system, a geospatialdescription file that includes a designated location and a viewpoint ofa virtual camera for viewing the designated location, wherein theviewpoint is unrelated to geometry specified by the designated location,such that the designated location is not within view; and present anindication of the designated location on the digital map, the digitalmap presented from the viewpoint of the virtual camera.
 16. Thenon-transitory computer-readable medium of claim 15, wherein theinstructions further cause the one or more processors to: present thedigital map of the geographic area from an initial viewpoint of thevirtual camera; present a user control for viewing the designatedlocation; and in response to receiving a selection of the user control,present an indication of the designated location on the digital map andadjusting a view of the digital map from the initial viewpoint of thevirtual camera to the viewpoint from the geospatial description file.17. The non-transitory computer-readable medium of claim 15, wherein theviewpoint of the virtual camera for viewing the designated locationincludes one or more of: a location of the viewpoint, a heading for theviewpoint indicative of a direction the virtual camera is facing, a tiltangle for the viewpoint, or a range indicative of the distance from asurface to the viewpoint of the virtual camera.